作者celestialgod (天)
看板R_Language
标题Re: [问题] 在R执行类似Excel countif > 0
时间Wed Apr 19 14:39:40 2023
※ 引述《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://webptt.com/cn.aspx?n=bbs/R_Language/M.1681886382.A.737.html
※ 编辑: celestialgod (125.229.239.131 台湾), 04/19/2023 14:40:21
1F:推 locka: 感谢celestialgod大大提供这麽多种写法!另外想请教 2-2 rl 04/19 20:13
2F:推 locka: ang的写法,parse_express前面的两个惊叹号的意思,是固定 04/19 20:13
3F:推 locka: 用法吗? 04/19 20:13
请参考rlang的文件喔
https://rlang.r-lib.org/reference/topic-inject.html
※ 编辑: celestialgod (125.229.239.131 台湾), 04/19/2023 20:15:51