0

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

我怎样才能做到这一点?

4

1 回答 1

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
于 2013-04-10T10:22:59.437 回答