是否可以将条件计数与其他非条件聚合一起包含?我知道您可以使用which()使用大多数聚合函数来执行此操作,但是找不到用于计数行的解决方案。
例如,以下代码将col4的col1加到sum1,并将col3> 3的col2的col2加到sum2。
> DT[, .(sum1 = sum(col1)
, sum2 = sum(col2[which(col3 > 3)]))
, by = (col4)]
.N有什么类似的东西吗?例如.N [which(col3> 3)]
我了解您可以使用以下方法单独执行此操作:
> DT[col3 > 3, .N, by = .(col4)] # this works but not what I'm after
那不是我所追求的。如果我只能使用data.table操作,我想将条件计数与其他非条件聚合集成在一起。我不想使用任何其他软件包。
这是示例数据:
> DT <- data.table(col1 = c(3,5,2,2,4), col2 = c(0,1,0,1,1), col3 = c(3,4,6,7,1), col4 = c('a', 'b', 'a', 'a' ,'b'))
> DT
col1 col2 col3 col4
1: 3 0 3 a
2: 5 1 4 b
3: 2 0 6 a
4: 2 1 7 a
5: 4 1 1 b
我想要的输出:
DT[, .( sum1 = sum(col1)
, sum2 = sum(col3[which(col3 > 3)])
, count3 = ???????) #.N[which(col3 > 3), but this doesn't work
, by = .(col4)]
col4 sum1 sum2 count3
1: a 7 13 2
2: b 9 4 1