我希望每个小组都有一个条件。我有以下数据
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
答案 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)]