You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选同时含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:00:47