根据条件从 table 中提取数据
Extract data from table with condition
我有数据。这是一个例子:
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,44444,77777被治疗条件排除(未接受任何PD1/PDL1),333333没有PDL1_date,99999接受了PD-1并且在PDL1date之前,但在PDL1date之前接受了其他治疗.
我已经尝试过 dplyr 过滤器 (PDL1_date
请帮忙。
你必须分享一个可重现的数据来帮助你,但也许这可以帮助你:
data %>%
filter(grepl("PD-1|PD[Ll]-1",protocoltype)) %>%
group_by(id) %>%
filter(treatmentstart == min(treatmentstart)) %>% ungroup()
我有数据。这是一个例子:
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,44444,77777被治疗条件排除(未接受任何PD1/PDL1),333333没有PDL1_date,99999接受了PD-1并且在PDL1date之前,但在PDL1date之前接受了其他治疗.
我已经尝试过 dplyr 过滤器 (PDL1_date
你必须分享一个可重现的数据来帮助你,但也许这可以帮助你:
data %>%
filter(grepl("PD-1|PD[Ll]-1",protocoltype)) %>%
group_by(id) %>%
filter(treatmentstart == min(treatmentstart)) %>% ungroup()