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

私が考えることができる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 に答える