我正在寻找一种方法来添加以下关于血液制品输血的数据:
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(和总结?)应该有效,我找到了类似问题的解决方案,但我不知道如何解决这个问题....
答案 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