假设我们有data.table
:
TYPE KEY VALUE
1: 1 A 10
2: 1 B 10
3: 1 A 40
4: 2 B 20
5: 2 B 40
我需要生成以下聚合data.table
(数字是给定TYPE和KEY的值的总和):
TYPE A B
1: 1 50 10
2: 2 0 60
在现实生活中,KEY有很多不同的值,所以不可能对它们进行硬编码。
我怎样才能做到这一点?
答案 0 :(得分:1)
我能想到的一种方式是:
# to ensure all levels are present when using `tapply`
DT[, KEY := factor(KEY, levels=unique(KEY))]
DT[, as.list(tapply(VALUE, KEY, sum)), by = TYPE]
# TYPE A B
# 1: 1 50 10
# 2: 2 NA 60