最终目标是在大样本个体中可视化每天服用的药物量。我试图重塑我的数据以制作堆积区域图表(或类似的东西)。
更通用的术语;我的数据结构如下:
id med start_date end_date
1 drug_a 2010-08-24 2011-03-03
2 drug_a 2011-06-07 2011-08-12
3 drug_b 2010-03-26 2010-10-31
4 drug_b 2012-08-14 2013-01-31
5 drug_c 2012-03-01 2012-06-20
5 drug_a 2012-04-01 2012-06-14
我想我正在尝试创建一个每个日期有一行的数据框,以及一个总和当天服用该药的患者总数(id
)的列。例如,如果有人从drug_a
开始2010-01-01
到2010-01-20
,则每个药物日都要计算在内。
类似的东西:
date drug_a drug_b drug_c
2010-01-01 5 0 10
2010-01-02 10 2 8
我使用dplyr和tidyr功能,但不确定如何使用日期和持续时间的传播。
答案 0 :(得分:1)
我会使用do循环扩展数据以使用所有日期:
library(dplyr)
library(tidyr)
library(zoo)
df %>%
group_by(id, med) %>%
do(with(.,
data_frame(
date = (start_date:end_date) %>% as.Date) ) ) %>%
group_by(date, med) %>%
summarize(frequency = n() ) %>%
spread(med, frequency)