R:数据框 - 如何添加值并合并重复值?

时间:2014-11-24 22:34:58

标签: r plyr

我正在寻找一种方法来添加以下关于血液制品输血的数据:

MRN  Product Transfusion.Date Volume
001  PRBC    2004-12-02       50
002  PRBC    2004-12-02       50
002  PRBC    2004-12-02      100
003  FFP     2004-12-03        1 
003  FFP     2004-12-03        1
003  FFP     2004-12-04        1

所以,只要相同的患者(MRN)在相同的日收到相同的产品,我想要做的就是添加卷。在所有其他情况下,我想将其分开。

MRN  Product Transfusion.Date Volume
001  PRBC    2004-12-02       50
002  PRBC    2004-12-02       150 
003  FFP     2004-12-03        2
003  FFP     2004-12-04        1

我认为使用ddply(和总结?)应该有效,我找到了类似问题的解决方案,但我不知道如何解决这个问题....

2 个答案:

答案 0 :(得分:2)

使用data.table

library(data.table)

可以在一行中完成

DT[, sum(Volume), by = list(MRN, Product, Transfusion.Date)]

括号中的第二个参数(j term)是您要执行的函数,by确定如何对数据进行子集化。您的示例的结果:

   MRN Product Transfusion.Date  V1
1:   1    PRBC       2004-12-02  50
2:   2    PRBC       2004-12-02 150
3:   3     FFP       2004-12-03   2
4:   3     FFP       2004-12-04   1

答案 1 :(得分:1)

aggregate(Volume~., data=df, sum)

 MRN Product Transfusion.Date Volume
1   1    PRBC       2004-12-02     50
2   2    PRBC       2004-12-02    150
3   3     FFP       2004-12-03      2
4   3     FFP       2004-12-04      1