计算自R中的最近一次访问或基线以来的天数(在具有不同重复实例数的数据集中)


data <- data.frame(
record_id = c(1,1,1,2,3,4,4,5,6,7,8,8,9,10,10,10),
visit_date = c("2020-09-24", "2020-12-05", "2021-03-01", "2021-10-03", "2021-10-01", "2021-10-05", "NA", "2021-08-25", "2021-09-19", "2021-10-01", "2021-09-27", "2021-09-07", 
"2021-10-03", "2021-10-08", "2022-03-22", "2022-07-12"),
repeat_instance = c(0,1,2,0,0,0,1,0,0,0,0,1,0,0,1,2),
Time_Since_Appointment = c("NA", "72d 1H 0M 0S", "86d 0H 0M 0S", "NA", "NA", "NA", "NA",
"NA", "NA", "NA", "NA", "1076d 0H 0M 0S", "NA", "NA", "165d 0H 0M 0S", "112d 0H 0M 0S")
)
data1 <- data %>% 
group_by(record_id) %>%
mutate(Time_Since_Appointment = visit_date - lag(visit_date))

我有兴趣计算一个新的变量,该变量将使用最新的repeat_instance来捕捉自今天以来的天数或周数,每个记录都不同,或者如果没有repeat_intance,则计算自基线就诊日期以来的时间。

非常感谢,如果需要提供更多信息,请告诉我。

首先,我会取每个ID的最大(最近(日期。接下来,我将使用difftime((函数来查找最近一次访问和今天访问之间的差异。在这种情况下,函数today((调用今天的日期,但可以用硬编码的日期代替。difftime((函数允许您选择想要的单位。在这种情况下,我计算了几天和几周的差异。

使用data.table包:

data <- data.table(
record_id = c(1,1,1,2,3,4,4,5,6,7,8,8,9,10,10,10),
visit_date = c("2020-09-24", "2020-12-05", "2021-03-01", "2021-10-03",
"2021-10-01", "2021-10-05", "NA", "2021-08-25",
"2021-09-19", "2021-10-01", "2021-09-27", "2021-09-07", 
"2021-10-03", "2021-10-08", "2022-03-22", "2022-07-12"))
data <- data[,.(last_visit = max(as.Date(visit_date,"%Y-%m-%d"))),by=.(record_id)]
data <- data[,days_since_last_visit := difftime(today(),last_visit,units="days")]
data <- data[,weeks_since_last_visit := difftime(today(),last_visit,units="weeks")]
data
record_id last_visit days_since_last_visit weeks_since_last_visit
1:         1 2021-03-01              546 days        78.000000 weeks
2:         2 2021-10-03              330 days        47.142857 weeks
3:         3 2021-10-01              332 days        47.428571 weeks
4:         4       <NA>               NA days               NA weeks
5:         5 2021-08-25              369 days        52.714286 weeks
6:         6 2021-09-19              344 days        49.142857 weeks
7:         7 2021-10-01              332 days        47.428571 weeks
8:         8 2021-09-27              336 days        48.000000 weeks
9:         9 2021-10-03              330 days        47.142857 weeks
10:        10 2022-07-12               48 days         6.857143 weeks

相关内容

最新更新