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

如何用R函数查找重复ID?SAS表导入R Studio后的多实验数据处理

查找重复患者ID并筛选数据的R方案

当然有啦!R里有不少简单好用的工具帮你搞定这个需求,不管是基础R函数还是tidyverse系列的工具,都能轻松找出重复ID并完成数据筛选。下面给你一步步拆解:

1. 找出参与多项实验的患者ID

方法一:用基础R快速实现

  • 先统计每个患者ID的出现次数:
    # 统计ID出现频次
    id_counts <- table(your_data$patient_id)
    # 筛选出出现次数>1的ID(也就是参与多项实验的患者)
    multi_experiment_ids <- names(id_counts[id_counts > 1])
    
  • 如果你想直接标记原数据中的重复行,可以用duplicated():
    # 给数据框加一列,标记该行是否为重复ID(除首次出现外的重复项)
    your_data$is_duplicate <- duplicated(your_data$patient_id)
    

方法二:用tidyverse(dplyr)更流畅地处理

如果你习惯用tidyverse的语法,整个流程会更连贯:

library(dplyr)

# 第一步:统计每个患者参与的实验次数
id_summary <- your_data %>%
  count(patient_id, name = "experiment_times")

# 第二步:筛选出参与多项实验的患者
multi_participants <- id_summary %>%
  filter(experiment_times > 1)

2. 筛选数据并选定单一实验

假设你的数据里有一列(比如experiment_type)标记了具体是哪项实验,你可以按需求给每个患者选其中一项:

# 示例:给每个患者选首次参与的实验数据(先按实验时间/类型排序,再取每组第一条)
filtered_data <- your_data %>%
  group_by(patient_id) %>%
  arrange(experiment_type) # 这里可以换成实验日期列,保证排序逻辑正确
  slice(1) %>% # 提取每组的第一条记录
  ungroup()

3. 确认观测数量

  • 查看筛选后的总观测数:
    nrow(filtered_data)
    
  • 要是想知道每个实验最终保留了多少患者,可以再加一步:
    filtered_data %>%
      count(experiment_type)
    

小提醒:导入SAS表后,记得检查patient_id的类型,避免因因子类型导致统计错误。可以用class(your_data$patient_id)查看,要是因子就转成字符型:your_data$patient_id <- as.character(your_data$patient_id)。

内容的提问来源于stack exchange,提问作者Ary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:31:09