我试图像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
函数
感谢您的帮助
答案 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
中使用的列。