2014-11-24 85 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