【发布时间】:2021-11-23 16:16:58
【问题描述】:
假设我有一个包含以下合成数据的数据框:
> set.seed(1)
>
> patient_id = seq(101, 150)
> admit_date = sample(seq(as.Date('2021/01/01'), as.Date('2021/01/10'), by="day"), 50, replace = T)
> release_date = sample(seq(as.Date('2021/01/11'), as.Date('2021/01/31'), by="day"), 50, replace = T)
> all = data.frame(patient_id, admit_date, release_date)
>
> all
patient_id admit_date release_date
1 101 2021-01-03 2021-01-21
2 102 2021-01-04 2021-01-29
.
.
.
49 149 2021-01-08 2021-01-28
50 150 2021-01-07 2021-01-23
在上面的示例中,发布日期晚于承认的数据。
我想有效地创建一个表格来计算给定日期出现的患者数量?
我有以下想要改进的解决方案:
> date_range = sort(unique(c(all$admit_date, all$release_date)))
> count_vector = vector()
>
> for(i in 1:length(date_range)){
> current_date = date_range
> count_vector[i] = length(which((all$admit_date <= date_range[i]) &
> (all$release_date >= date_range[i])) )
> }
>
> date_count = data.frame(date_range, count_vector)
> date_count
date_range count_vector
1 2021-01-01 3
2 2021-01-02 7
3 2021-01-03 12
.
.
.
27 2021-01-29 7
28 2021-01-30 2
29 2021-01-31 1
此解决方案适用于小型数据集,但是是否可以改进我现有的解决方案以有效获取大型数据集所需的计数?
【问题讨论】: