R:特定列上的data.table计数行> 0

时间:2018-12-10 19:33:02

标签: r data.table countif

我试图像Excel中那样做一个countif函数。我想统计一下行中大于0的一组选定列。

我正在使用data.table包来过滤和计数我的数据。

我的data.table是DT,其中包含超过5000行数据,17列。这是其外观的快速快照。周从1-12周开始。

Area     Park   Number   Code  Text    Week1 Week2 Week3 Week4 Week5
Central  Bear   80458    FM50  Safety   1     0     5     20     0

我要寻找的内容:(计数周> 0)

 Area     Park   Number   Code  Text    Week1  Week2  Week3  Week4  Week5 RowCount
Central  Bear   80458    FM50  Safety     1      0      5      20     0       3

我想做的是:

DT <- DT[, RowCount := rowSums(DT[, c(-1, -2, -3, -4, -5)] >0) ]

这适用于对行进行求和,它删除了我不想计数的列,但是当我查看其他5000行时,它对所有> 0进行求和,而不对所有> 0进行计数。

本质上,我想做的就是像Excel countIf函数

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

这是使用rowSums的一种方式:

dt <- data.table(W1 = sample(0:2, 3, rep = T),
                 W2 = sample(0:2, 3, rep = T),
                 W3 = sample(0:2, 3, rep = T))

dt[, Count := rowSums(.SD > 0), .SDcols = 1:3]

   W1 W2 W3 Count
1:  0  0  0     0
2:  2  1  1     3
3:  0  2  1     2

您只需要调整即可在.SDcols中使用的列。