我正在尝试实施此处Getting rowSums in a data table in R提出的rowums解决方案。基本上,我希望每个行的变量都具有top15,top16和top17之和。此输出产生一个答案,但显然不正确,我确定我了解发生了什么。
我正在寻找一个data.table解决方案-我正在数以百万计的案例中运行它
library( data.table)
d <- structure(list(top15 = c(1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1), top16 = c(0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0), top17 = c(0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)), class = c("data.table",
"data.frame"), row.names = c(NA, -20L))
d[ , tops:=lapply(.SD,sum), .SDcols=c(paste0("top", 15:17))]
答案 0 :(得分:2)
我们可以在data.table的子集(rowSums
)上使用.SD
,它也可以处理NA
的{{1}}元素
na.rm
或者如果没有nm1 <- paste0("top", 15:17)
d[, tops := rowSums(.SD, na.rm = TRUE), .SDcols = nm1]
元素,则对NA
做+
Reduce