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