data.table条件行计数与R中的其他非条件聚合集成

时间:2019-02-21 05:26:44

标签: r count data.table conditional aggregate

是否可以将条件计数与其他非条件聚合一起包含?我知道您可以使用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

0 个答案:

没有答案