Re: [問題] 在R執行類似Excel countif > 0

看板R_Language作者 (天)時間1年前 (2023/04/19 14:39), 1年前編輯推噓3(300)
留言3則, 1人參與, 1年前最新討論串2/2 (看更多)
※ 引述《haitairoutzu (海苔肉粽)》之銘言: : [問題類型]: : 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) : [軟體熟悉度]: : 入門(寫過其他程式,只是對語法不熟悉) : [問題敘述]: : 我有一筆dataset, : 我想計算每一個Row中,大於0的數值有多少,並新增一個column記錄。如附圖所示 : https://i.imgur.com/mdV6cIW.jpg
: [程式範例]: : 目前data set : data <- data.frame(ID=c('A', 'B', 'C', 'D', 'E'), : V1=c(14, 0, 8, 0, 0), : V2=c(0, 5, 5, 0, 5), : V3=c(1, 7, 5, 0, 12), : V4=c(7, 5, 0, 0, 12)) : 很久沒回文 簡單回一下 你的範例跟你的描述對不起來 我就用你的描述寫了 # 1 data[ , "varGreaterThan0"] = apply(data[ , sapply(data, is.numeric)], 1, function(v) sum(v > 0)) # 2-1 library(dplyr) data_frame(data) %>% mutate(varGreaterThan0 = (V1 > 0) + (V2 > 0) + (V3 > 0) + (V4 > 0)) # 2-2 library(rlang) numColnames <- names(data)[sapply(data, is.numeric)] varGreaterThan0Expression <- paste0("(", numColnames, ">0)", collapse = "+") data_frame(data) %>% mutate(varGreaterThan0 = !!parse_expr(varGreaterThan0Expression)) # 3 library(data.table) DT <- data.table(data) numColnames <- names(DT)[sapply(DT, is.numeric)] varGreaterThan0Expression <- paste0("(", numColnames, ">0)", collapse = "+") DT[ , varGreaterThan0 := eval(parse(text=varGreaterThan0Expression))] -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.229.239.131 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1681886382.A.737.html ※ 編輯: celestialgod (125.229.239.131 臺灣), 04/19/2023 14:40:21

04/19 20:13, 1年前 , 1F
感謝celestialgod大大提供這麼多種寫法!另外想請教 2-2 rl
04/19 20:13, 1F

04/19 20:13, 1年前 , 2F
ang的寫法,parse_express前面的兩個驚嘆號的意思,是固定
04/19 20:13, 2F

04/19 20:13, 1年前 , 3F
用法嗎?
04/19 20:13, 3F
請參考rlang的文件喔 https://rlang.r-lib.org/reference/topic-inject.html ※ 編輯: celestialgod (125.229.239.131 臺灣), 04/19/2023 20:15:51
文章代碼(AID): #1aFuokSt (R_Language)
文章代碼(AID): #1aFuokSt (R_Language)