每个组的总和,其中包含data.table中的条件

时间:2016-11-13 13:51:29

标签: r data.table

我希望每个小组都有一个条件。我有以下数据

a<-data.table (facto=c ("a","b","a","a","b","b","b"), value = c (2,3,2,3,2,2,2))

    facto value
1:     a     2
2:     b     3
3:     a     2
4:     a     3
5:     b     2
6:     b     2
7:     b     2

我想使用data.table计算其值不等于3的事实总和。

我使用了这段代码

output <-a[, (value=sum(value!=3)), .(facto)]

它给了我以下数据,计算每组不等于3的行:

   facto V1
1:     a  2
2:     b  3

但是,我希望得到以下结果:

       facto V1
    1:     a  4
    2:     b  6

1 个答案:

答案 0 :(得分:4)

我们可以在i中指定逻辑条件,并获取sum的值&#39;按facto

a[value!=3, sum(value), by = facto]
#   facto V1
#1:     a  4
#2:     b  6

此外,OP的代码在获取子集后获得sum逻辑索引而不是value

a[, (value=sum(value[value!=3])), .(facto)]