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

如何在R语言中筛选多列含Paracetamol的数据集行?

解决方案

针对你的需求,这里提供两种常用的R语言实现方法,可快速筛选出任意Medication1至Medication50列中包含"Paracetamol"(不区分大小写)的行:

方法一:Base R 原生实现

# 匹配所有以Medication开头的列(自动覆盖Medication1到Medication50)
med_cols <- grep("^Medication\\d+$", names(df), value = TRUE)

# 检查每行是否存在匹配"Paracetamol"的内容(忽略大小写)
has_paracetamol <- rowSums(sapply(df[med_cols], function(x) grepl("paracetamol", x, ignore.case = TRUE))) > 0

# 筛选符合条件的行
filtered_df <- df[has_paracetamol, ]

方法二:tidyverse/dplyr 简洁实现

如果你熟悉tidyverse工具链,这种写法更直观:

library(dplyr)

filtered_df <- df %>%
  filter(if_any(starts_with("Medication"), ~ grepl("paracetamol", ., ignore.case = TRUE)))

关键说明

  • starts_with("Medication") 会自动匹配所有以"Medication"开头的列,无需手动枚举50列的名称。
  • grepl(..., ignore.case = TRUE) 确保大小写不影响匹配,不管是"Paracetamol"还是"paracetamol"都能被识别。
  • if_any 函数负责检查每行的任意药物列是否满足条件,只要有一列符合就保留该行。

用你提供的示例数据测试,最终会保留ID1和ID2对应的行(ID1的Medication1含paracetamol,ID2的Medication3含paracetamol)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:32:12