我有这个数据集,其中包含患者 ID、诊断日期、诊断、trt_date 和药物代码。
# Create the dataset
data <- data.frame(
patient_id = c(1, 1, 1, 1, 5, 5, 7, 7),
diagnosis_date = as.Date(c("1/9/10", "1/9/10", "1/9/10", "1/9/10", "1/11/10", "1/11/10", "1/9/10", "1/9/10"), format = "%m/%d/%y"),
diagnosis = c("breast cancer", "breast cancer", "breast cancer", "breast cancer", "breast cancer", "breast cancer", "breast cancer", "breast cancer"),
trt_date = as.Date(c("1/20/10", "1/20/10", "1/21/10", "1/21/10", "1/29/10", "1/30/10", "1/25/10", "1/26/10"), format = "%m/%d/%y"),
drug_code = c("A", "B", "A", "A", "B", "A", "A", "A")
)
# Print the dataset
print(data)
过滤条件如下:
患者 ID 1,首次治疗日期为 2010 年 1 月 20 日,接受了药物 A,但也在同一天接受了药物 B(第二条观察线)。这称为药物 A 和 B 的一线组合疗法,我们需要将其过滤掉。因此患者 id 1 将被过滤掉。
患者 ID 5,首次治疗日期为 2010 年 1 月 29 日,仅接受药物 B,这称为药物 B 的一线单一疗法。
患者 ID 7 的首次治疗日期为 2010 年 1 月 25 日,仅接受药物 A,这称为药物 A 的一线单一疗法。
因此,我想要观察到只有药物 A 的一线单药治疗和药物 B 的一线单药治疗,而不是药物 A 和 B 的一线组合治疗。
因此所需的输出将如下所示:
patient_id diagnosis_date diagnosis trt_date drug_code
5 2010-01-11 breast cancer 2010-01-29 B
5 2010-01-11 breast cancer 2010-01-30 A
7 2010-01-09 breast cancer 2010-01-25 A
7 2010-01-09 breast cancer 2010-01-26 A
7 2010-01-09 breast cancer 2010-01-27 C
library(dplyr)
data %>%
filter(lapply(list(drug_code), length) == 1, .by = c(patient_id, trt_date))
#> patient_id diagnosis_date diagnosis trt_date drug_code
#> 1 5 2010-01-11 breast cancer 2010-01-29 B
#> 2 5 2010-01-11 breast cancer 2010-01-30 A
#> 3 7 2010-01-09 breast cancer 2010-01-25 A
#> 4 7 2010-01-09 breast cancer 2010-01-26 A
创建于 2024-03-27,使用 reprex v2.0.2