使用dplyr筛选同时包含Week_4和Week_5样本的受试者
问题描述
现有如下DataFrame:
| ID | Subject | Week |
|---|---|---|
| ID01 | S01 | Week_2 |
| ID02 | S01 | Week_4 |
| ID03 | S01 | Week_5 |
| ID04 | S02 | Week_3 |
| ID05 | S03 | Week_2 |
| ID06 | S03 | Week_4 |
| ID07 | S04 | Week_1 |
| ID08 | S04 | Week_4 |
| ID09 | S04 | Week_5 |
需要用dplyr筛选出同时拥有Week_4和Week_5采集时间点的受试者,并保留这些受试者的所有样本,最终结果需包含符合条件受试者的全部记录。
解决方案
使用dplyr的分组筛选即可实现需求:
library(dplyr) # 假设原数据框名为df result_df <- df %>% group_by(Subject) %>% filter(all(c("Week_4", "Week_5") %in% Week)) %>% ungroup()
代码说明
group_by(Subject):按受试者分组,以便针对每个个体检查时间点覆盖情况filter(all(c("Week_4", "Week_5") %in% Week)):判断当前分组的Week列是否同时包含两个目标时间点,仅保留满足条件的分组ungroup():取消分组,还原为标准DataFrame结构
运行代码后得到的结果即为目标输出:
| ID | Subject | Week |
|---|---|---|
| ID01 | S01 | Week_2 |
| ID02 | S01 | Week_4 |
| ID03 | S01 | Week_5 |
| ID07 | S04 | Week_1 |
| ID08 | S04 | Week_4 |
| ID09 | S04 | Week_5 |
内容的提问来源于stack exchange,提问作者eraysahin
相关产品推荐
相关产品推荐

