R 使用同一日期的多个剂量条目计算每日剂量

R 使用同一日期的多个剂量条目计算每日剂量,r,date,dataframe,summarize,R,Date,Dataframe,Summarize,我将感谢任何人在这个问题上的帮助和建议 第一个数据框包含给患者的药物以及给药日期。我需要运行这个数据帧并计算每个id的每种药物的每日剂量,以便输出的数据帧类似于第二个数据帧 第一个数据帧 第二个数据帧 如果需要更多信息,请随时发表评论,我会回复您。库(dplyr) df1%>% 分组依据(id、药物、日期)%>% 总结(每日剂量=总和(剂量,na.rm=T), 单位=第一(单位)) 我认为您的第二个数据帧(期望的结果)并不完整。但这可以通过使用aggregate在base中完成: >

我将感谢任何人在这个问题上的帮助和建议

第一个数据框包含给患者的药物以及给药日期。我需要运行这个数据帧并计算每个id的每种药物的每日剂量,以便输出的数据帧类似于第二个数据帧

第一个数据帧

第二个数据帧

如果需要更多信息,请随时发表评论,我会回复您。

库(dplyr)
df1%>%
分组依据(id、药物、日期)%>%
总结(每日剂量=总和(剂量,na.rm=T),
单位=第一(单位))

我认为您的第二个数据帧(期望的结果)并不完整。但这可以通过使用
aggregate
在base中完成:

> df2 <- aggregate(dose ~ id + drug + date + units, data=df1, FUN=sum)
> head(df2)

       id               drug       date units dose
1 1010001           Morphine 2006-04-18   mcg   60
2 1010002           Fentanyl 2008-05-28   mcg  100
3 1010001        Ganciclovir 2006-04-18    mg   60
4 1010001 Methylprednisolone 2006-04-18    mg   46
5 1010001      Acetaminophen 2006-04-19    mg 1000
6 1010001          Cefazolin 2006-04-19    mg 1000
>df2头(df2)
药物日期单位剂量
1010001吗啡2006-04-18微克60
2 1010002芬太尼2008-05-28微克100
3 1010001更昔洛韦2006-04-18毫克60
4 1010001甲基强的松龙2006-04-18毫克46
5 1010001对乙酰氨基酚2006-04-19毫克1000
6 1010001头孢唑林2006-04-19毫克1000
库(data.table);setDT(dt1)[,每日剂量:=总和(剂量),by=列表(id、日期、药物、单位)][]
structure(list(id = c(1010001, 1010001, 1010001, 1010001, 1010001, 
1010001, 1010001, 1010001, 1010001, 1010001, 1010001, 1010001, 
1010001), drug = c("Furosemide", "Furosemide", "Magnesium Sulfate", 
"Methylprednisolone", "Methylprednisolone", "Morphine", "Acetaminophen", 
"Acetaminophen", "Cefazolin", "Cefazolin", "Ganciclovir", "Ganciclovir", 
"Methylprednisolone"), date = structure(c(1145404800, 1145491200, 
1145318400, 1145318400, 1145404800, 1145318400, 1145404800, 1145491200, 
1145404800, 1145491200, 1145318400, 1145404800, 1145404800), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), dailydose = c(62, 60, 6, 46, 46, 60, 
1000, 1000, 1000, 1000, 60, 60, 69), units = c("mg", "mg", "mmol", 
"mg", "mg", "mcg", "mg", "mg", "mg", "mg", "mg", "mg", "mg")), row.names = c(NA, 
-13L), class = c("tbl_df", "tbl", "data.frame"))
> df2 <- aggregate(dose ~ id + drug + date + units, data=df1, FUN=sum)
> head(df2)

       id               drug       date units dose
1 1010001           Morphine 2006-04-18   mcg   60
2 1010002           Fentanyl 2008-05-28   mcg  100
3 1010001        Ganciclovir 2006-04-18    mg   60
4 1010001 Methylprednisolone 2006-04-18    mg   46
5 1010001      Acetaminophen 2006-04-19    mg 1000
6 1010001          Cefazolin 2006-04-19    mg 1000