Re: [问题] 挑出某些条件的数值做整理

楼主: celestialgod (天)   2017-04-22 23:06:35
※ 引述《smallpigpi (一勺子)》之铭言:
: [问题类型]:
: 程式询问(我想用R 做某件事情,但我不知道怎么用R写出来)
: [软件熟悉度]:
: 超级新手(没写过程式,R 是我的第一次)
: [问题叙述]:
: S.L S.W P.L P.W Species
: 49.0 30.0 14.000 2.0 setosa
: 5.6 2.9 3.600 1.3 versicolor
: 6.8 3.2 5.900 2.3 virginica
: 我想请问
: 如何挑出大于10的数值把它除于10
: 以及如何把每个数值统一显示小数点后一位
: 谢谢各位大大
: (手机排版,不知道会不会乱掉)
# data.table做法:
library(data.table)
irisDT <- data.table(iris)
irisDT[ , lapply(.SD, function(x){
if (is.numeric(x)) {
ifelse(x > 10, x / 10, x)
} else return(x)})]
# dplyr做法:
library(dplyr)
irisDT %>% mutate_if(is.numeric, funs(ifelse(. > 10, . / 10, .)))
# base函数解法:
evalExpr <- lapply(names(irisDT)[sapply(irisDT, is.numeric)],
function(x) bquote(ifelse(.(as.symbol(x)) > 10, .(as.symbol(x)) / 10,
.(as.symbol(x)))))
do.call(function(...) transform(irisDT, ...), evalExpr)
看一下这篇:
https://www.ptt.cc/bbs/R_Language/M.1492181442.A.5B4.html
统一显示小数点后一位的话:
print(iris, digits = 2)
作者: smallpigpi (一勺子)   2017-04-22 23:26:00
谢谢大大指点,不过不知为何我启动不了data.tablehttp://i.imgur.com/X1iF3SD.jpg我原本是使用data.frame处理,也只学到这里XD除了data.table其它方法大概还啃不下。还是非常感谢
作者: clansoda (小笨)   2017-04-22 23:57:00
额,你知道有些library不是内建的吗你得install.packages("data.table")
作者: smallpigpi (一勺子)   2017-04-23 00:04:00
知道XD,图片里第一行有下载一次
作者: clansoda (小笨)   2017-04-23 00:06:00
我看到了

Links booklink

Contact Us: admin [ a t ] ucptt.com