私は大きな問題に苦しんでいて、それを解決する効率的な方法を見つけられません。
# DT1 DT2
# I A B I C D
# id1 1 10 id1 1 a
# id2 2 20 id2 2 a
# id3 3 30 id3 2 b
# id4 4 40 id4 1 a
# id5 5 50 id5 1 c
# id6 6 60 id6 1 c
# id7 7 70 id7 2 c
# id8 8 80 id8 2 b
アイデアは、データフレームを作成することです列Dに基づいて結果を集計します。したがって、列AAはa、b、cに基づいてAの値を合計します。BBについても同じで、最後のCC(最も複雑な)はCが1でB Cが2の場合
これが私が得ようとしている結果です。
# AA BB CC
# a 7 70 25
# b 11 110 110
# c 18 180 81
私は、 aggregate
DT1で機能しますが、DT2の列Dに基づいてそれを判断する方法がわかりません。 merge
しかし、私が述べたように、データは非常に大きいため、マージするとメモリに浸ることがあります。
任意の提案をいただければ幸いです。ありがとう
回答:
回答№1は2これを試して:
DT3 <- aggregate(cbind(DT1$A,DT1$B, ifelse(DT2$C==1,DT1$A , DT1$B))~ DT2$D, FUN=sum)