Re: [問題] 在R執行類似Excel countif > 0
※ 引述《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
04/19 20:13, 1F
推
04/19 20:13,
1年前
, 2F
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章