Re: [問題] 挑出某些條件的數值做整理
※ 引述《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)
--
R資料整理套件系列文:
magrittr #1LhSWhpH (R_Language) https://goo.gl/72l1m9
data.table #1LhW7Tvj (R_Language) https://goo.gl/PZa6Ue
dplyr(上.下) #1LhpJCfB,#1Lhw8b-s (R_Language) https://goo.gl/I5xX9b
tidyr #1Liqls1R (R_Language) https://goo.gl/i7yzAz
pipeR #1NXESRm5 (R_Language) https://goo.gl/zRUISx
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.224.97.253
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1492873599.A.0AD.html
推
04/22 23:26, , 1F
04/22 23:26, 1F
→
04/22 23:26, , 2F
04/22 23:26, 2F

推
04/22 23:29, , 3F
04/22 23:29, 3F
→
04/22 23:29, , 4F
04/22 23:29, 4F
→
04/22 23:29, , 5F
04/22 23:29, 5F
給一個最簡單的方法:
for (nn in names(irisDT)[sapply(irisDT, is.numeric)])
iris[[nn]] <- ifelse(iris[[nn]] > 10, iris[[nn]] / 10, iris[[nn]])
→
04/22 23:57, , 6F
04/22 23:57, 6F
→
04/22 23:58, , 7F
04/22 23:58, 7F
推
04/23 00:04, , 8F
04/23 00:04, 8F
→
04/23 00:06, , 9F
04/23 00:06, 9F
※ 編輯: celestialgod (125.224.97.253), 04/23/2017 01:32:32
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章