2014-11-24 162 views
-1

我正在寻找一种方式来增加对血液制品输血以下数据:R:数据框 - 如何合并值并合并重复值?

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

@RichardScriven是的,我确实做了一些搜索,但我不知道如何表达出该问题并没有使用术语汇总(不知道它被称为是) 。会做。 – 2014-11-24 22:45:09

+1

'dplyr'你可以做'group_by(df,MRN,Product,Transfusion.Date)%>%summarize(Volume = sum(Volume))' – 2014-11-24 22:55:53

回答

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 
+1

或者更明确一点:'aggregate(Volume〜MRN + Product + Transfusion.Date,data = df,FUN = sum)' – 2014-11-24 22:53:46

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