【发布时间】:2019-10-16 20:00:09
【问题描述】:
该项目的目的是测量医学实验室检查和最近一次服药之间的时间间隔。每个患者的后续剂量不同,每个受试者的后续实验室检查次数也不同。
第一个数据框包含 study_id 和相应的剂量日期:
library(dplyr)
library(lubridate)
study_id<- c(1, 1, 1, 2, 2, 3)
dose_dt <- c('1/1/00', '2/1/00', '3/1/00', '1/1/01', '2/1/01', '1/1/02')
doses_df <- data.frame(study_id, dose_dt)
doses_df$dose_dt <- mdy(doses_df$dose_dt)
print(doses_df)
study_id dose_dt
1 1 2000-01-01
2 1 2000-02-01
3 1 2000-03-01
4 2 2001-01-01
5 2 2001-02-01
6 3 2002-01-01
第二个数据框具有匹配的 study_id,这次是实验室检查日期和相关的实验室值以及异常指示符(是/否)。
study_id <- c(1, 1, 1, 2, 3, 3, 3)
lab_dt <- c('1/1/99', '3/1/00', '4/1/00', '2/1/01', '2/1/02', '3/1/02', '4/1/02')
lab_result <- c(100, 200, 50, 25, 75, 100, 75)
lab_abn_yn <- c(0, 0, 1, 1, 1, 0, 1)
labs_df <- data.frame(study_id, lab_dt, lab_result, lab_abn_yn)
labs_df$lab_dt <- mdy(labs_df$lab_dt)
print(labs_df)
study_id lab_dt lab_result lab_abn_yn
1 1 1999-01-01 100 0
2 1 2000-03-01 200 0
3 1 2000-04-01 50 1
4 2 2001-02-01 25 1
5 3 2002-02-01 75 1
6 3 2002-03-01 100 0
7 3 2002-04-01 75 1
请注意,受试者 1 的一次实验室检查是在第一次服药之前的过去,受试者 2 的剂量多于实验室检查,受试者 3 的剂量少于实验室检查。
我希望 R 在实验室检查之前确定最近服药的日期,以便我可以计算服药和实验室检查之间的时间间隔。输出将保留实验室值和指标。最好,在第一次给药之前的实验室检查(从剂量到实验室检查的负时间间隔)将报告为 NA,但我可以轻松过滤掉负时间间隔。我也知道如何使用 lubridate 来计算时间间隔,所以需要将其添加到解释中。
期望的输出:
study_id lab_dt most_recent_dose_dt lab_result lab_abn_yn interval_months
<dbl> <chr> <chr> <chr> <dbl> <dbl>
1 1 1999-01-01 NA NA NA NA
2 1 2000-03-01 2000-02-02 200 0 0.966
3 1 2000-04-01 2000-03-01 50 1 1
4 2 2001-02-01 2001-01-01 25 1 1
5 3 2002-02-01 2002-01-01 75 1 1
6 3 2002-03-01 2002-01-01 100 0 2
7 3 2002-04-01 2002-01-01 75 1 3
我尝试了许多合并方案,但没有一个能保留所有数据。有大约 40,000 个主题,因此手动执行此操作是不可行的。非常感谢任何帮助。
【问题讨论】: