我有数据。下面是一个例子:
A tibble: 1,296 x 4
id treatmentstart protocoltype PDL1_date
<dbl> <chr> <chr> <chr>
1 1111 05/11/2020 Chemoradiation 05/03/2020
2 22222 03/03/2021 Chemo plus PD-1 plus CTLA-4 01/03/2020
3 333333 08/04/2018 Anti-VEGF plus Chemo NA
4 444444 07/06/2019 Chemoradiation 03/08/2018
5 555555 09/12/2020 Chemo plus PDl-1 07/11/2020
6 666666 05/06/2018 PD-1 08/02/2017
7 666666 07/07/2018 Chemotherapy 08/02/2017
8 777777 07/05/2019 Chemotherapy 06/03/2020
9 999999 08/08/2018 Chemoradiation 08/05/2020
10 999999 12/07/2017 PDL-1 08/05/2020正如您所看到的,有些ID是重复的,但是有不同的处理方法(协议类型)--我需要提取满足以下条件的ID:测试日期、早期治疗开始日期和治疗类型--包括"PD1“或"PDL1",如果ID有多个治疗,那么我需要比较治疗日期,选择最早的治疗日期,并与测试日期进行比较,如果测试较早,则适合,如果没有,则不适合。
结论:只有那些在某一类型治疗("PD1“或"PDL1")之前有测试日期而在测试日期之前没有接受过任何其他治疗的人才应该被选中。下面是一个应该出现的例子:
A tibble: 1,296 x 4
id treatmentstart protocoltype PDL1_date
<dbl> <chr> <chr> <chr>
1 22222 03/03/2021 Chemo plus PD-1 plus CTLA-4 01/03/2020
2 555555 09/12/2020 Chemo plus PDl-1 07/11/2020
6 666666 05/06/2018 PD-1 08/02/2017因此,1111,4444,77777排除在治疗条件之外(未接受任何PD1/PD1 1),333333例无PDL1_date,99999例在PDL1date之前接受PD-1,但在PDL1date之前接受其他治疗。
我已经尝试过dplyr过滤器(PDL1_date
请帮帮忙。
发布于 2021-04-01 14:46:23
为了帮助您,您必须共享可重复的数据,但这可能会对您有所帮助:
data %>%
filter(grepl("PD-1|PD[Ll]-1",protocoltype)) %>%
group_by(id) %>%
filter(treatmentstart == min(treatmentstart)) %>% ungroup()https://stackoverflow.com/questions/66905256
复制相似问题