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

如何基于R语言获取数据框中每个ID的最新阳性检测结果?

问题:获取每个ID对应的最新阳性检测结果

原始数据框

data <- data.frame(ID = c(174524, 175268, 176590),
     lab_info = c("RTPCR, RTPCR, RTPCR", "RTPCR, RTPCR, RTPCR, ANTIGEN, ANTIGEN", "RTPCR, RTPCR"),
     date_specimen_collected = c("09/25/2020, 01/05/2022, 05/03/2023", "07/09/2021, 10/27/2021, 05/04/2023, 07/07/2021, 07/09/2021"),
     lab_result = c("Positive, Positive, Positive", "Pending, Positive, Positive, Negative, Negative", "Positive, Positive"),
     date_result_received = c("01/01/1900, 01/07/2022, 05/04/2023", "01/01/1900, 10/28/2021, 05/04/2023, 07/07/2021, 07/09/2021", "07/18/2021, 05/05/2023"))

现有代码问题

现有代码仅筛选出阳性结果,但无法提取每个ID对应的最新标本采集日期的记录,且存在列名笔误、未处理分割后空格等问题。


修正后的代码

library(dplyr)
library(stringr)

FINAL_data <- data %>%
  # 修正列名:原始数据为lab_info,而非lab_info_type
  select(ID, lab_info, date_specimen_collected, lab_result, date_result_received) %>%
  # 按", "分割行,避免生成带前导空格的字符串
  separate_rows(lab_info, lab_result, date_specimen_collected, date_result_received, sep = ", ") %>%
  # 筛选阳性结果,用str_trim处理可能的空格
  filter(str_trim(lab_result) == "Positive") %>%
  # 转换日期格式,同时清理空格
  mutate(
    date_specimen_collected = as.Date(str_trim(date_specimen_collected), "%m/%d/%Y"),
    date_result_received = as.Date(str_trim(date_result_received), "%m/%d/%Y")
  ) %>%
  # 按ID分组,提取每组中标本采集日期最新的1条记录
  group_by(ID) %>%
  slice_max(date_specimen_collected, n = 1) %>%
  # 取消分组(可选,根据后续操作需求)
  ungroup()

关键调整说明

  1. 列名修正:原代码中lab_info_type是笔误,原始数据框的对应列是lab_info,必须匹配才能正确分割。
  2. 分割符优化:使用", "作为分隔符,直接避免分割后字符串出现前导空格;如果原始数据分隔符不统一,可搭配str_trim清理字符串。
  3. 日期处理:转换日期前用str_trim清理空格,确保日期字符串格式正确,避免转换失败。
  4. 提取最新记录:分组后使用slice_max(date_specimen_collected, n = 1)直接提取每组中日期最新的阳性记录,比arrange后slice(1)更高效直观。

输出结果

运行后FINAL_data会得到每个ID对应的最新阳性检测记录:

# A tibble: 3 × 5
      ID lab_info date_specimen_collected lab_result date_result_received
    <dbl> <chr>    <date>                  <chr>      <date>              
1 174524 RTPCR    2023-05-03              Positive   2023-05-04          
2 175268 RTPCR    2023-05-04              Positive   2023-05-04          
3 176590 RTPCR    2023-05-04              Positive   2023-05-05

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:57:07