/ /別のデータフレームに基づいて1つのデータフレームの値を集約-r、merge、dataframe、aggregate

別の1つのデータフレームに基づいて値を集計する - r、merge、dataframe、aggregate

私は大きな問題に苦しんでいて、それを解決する効率的な方法を見つけられません。

#  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)