具有data.table聚合的转置

时间:2013-04-10 10:09:01

标签: r aggregate data.table transpose

假设我们有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有很多不同的值,所以不可能对它们进行硬编码。

我怎样才能做到这一点?

1 个答案:

答案 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