在data.table中按行获取总和

时间:2019-04-01 11:17:42

标签: r data.table

我正在尝试实施此处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))]

1 个答案:

答案 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