如何筛选同时含D和P1样本类型的患者的R语言DataFrame行?
R语言DataFrame患者样本筛选方案
原始数据
首先定义原始DataFrame:
bigDf <- data.frame(sampleType = c("D","D","D","P1", "P2","D","P3","D","P1") ,patient= c("x17","x17","x18","x18","x18","x19","x19","x20","x20"))
原始数据输出:
> bigDf sampleType patient 1 D x17 2 D x17 3 D x18 4 P1 x18 5 P2 x18 6 D x19 7 P3 x19 8 D x20 9 P1 x20
需求说明
- 只保留同时拥有
D和P1两种sampleType的患者的所有相关行 - 排除仅有一种、或完全没有这两种类型的患者
- 同时剔除所有sampleType不是
D或P1的行(哪怕同一患者其他行符合条件)
实现代码
用dplyr包实现,核心思路是先过滤非目标样本类型,再按患者分组筛选出同时包含两种类型的组:
library(dplyr) outputDf <- bigDf %>% # 第一步:筛掉sampleType不是D或P1的行 filter(sampleType %in% c("D", "P1")) %>% # 按患者分组 group_by(patient) %>% # 筛选出组内同时包含D和P1的患者 filter(all(c("D", "P1") %in% sampleType)) %>% # 取消分组(可选,方便后续操作) ungroup() # 查看结果 outputDf
输出结果
> outputDf # A tibble: 4 × 2 sampleType patient <chr> <chr> 1 D x18 2 P1 x18 3 D x20 4 P1 x20
内容的提问来源于stack exchange,提问作者Wera
相关产品推荐
相关产品推荐

