我为一个大问题而奋斗,我找不到一种有效的解决方法。我有两个(大)数据框,有一个像
这样的公共列# 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则求和A,如果C为2则求和B.
这是我想要的结果。
# AA BB CC
# a 7 70 25
# b 11 110 110
# c 18 180 81
我想我需要在DT1上使用aggregate
函数,但我不知道如何判断它是否基于DT2的D列。也许是merge
,但正如我所提到的,数据非常大,合并可以吸收内存。
任何建议都会受到赞赏。感谢
答案 0 :(得分:2)
试试这个:
DT3 <- aggregate(cbind(DT1$A,DT1$B, ifelse(DT2$C==1,DT1$A , DT1$B))~ DT2$D, FUN=sum)