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

在R语言中为数据框里的抗生素耐药基因自动分配对应组别

解决R中抗生素耐药基因自动分组的问题

没问题,我帮你写个实用的R脚本来搞定这个抗生素耐药基因的组别分配需求!下面是具体的实现步骤和代码,完全适配你给出的示例场景,还能灵活扩展规则。

思路说明

你的需求核心是:根据基因名称中的关键词,给每行(或每个单独基因)匹配对应的抗生素组别。我们可以借助tidyverse工具包来高效处理字符串和数据框操作,主要分两步:

  1. 把逗号分隔的基因拆分成单独条目(方便精准匹配)
  2. 根据预设的关键词规则分配组别,最后可以按需合并回原格式

完整代码实现

首先,先构造你的示例数据,然后逐步处理:

# 加载必备工具包
library(tidyverse)

# 1. 构造你的示例数据框
df <- tibble(
  Nr = 1:2,
  Gene = c("TEM-1, CTX-M-12, CTX-M-14, ampC", "VIM, blaCMY, CTX-M-24")
)

# 2. 拆分基因到单独行并匹配组别
df_processed <- df %>%
  # 把逗号分隔的基因拆成单独行,同时去掉逗号后的空格
  separate_rows(Gene, sep = ", ") %>%
  # 根据基因关键词匹配对应组别
  mutate(Group = case_when(
    # 含CTX或CMY的归为beta-lactamases
    str_detect(Gene, "CTX|CMY") ~ "beta-lactamases",
    # 含VIM的归为Vancomycin
    str_detect(Gene, "VIM") ~ "Vancomycin",
    # 可以添加更多规则,比如TEM和ampC也属于beta-lactamases(按需开启)
    # str_detect(Gene, "TEM|ampC") ~ "beta-lactamases",
    # 匹配不到的基因归为Unknown
    TRUE ~ "Unknown"
  ))

# 3. 按需合并回原数据格式(保留原Nr的基因和对应组别)
df_final <- df_processed %>%
  group_by(Nr) %>%
  summarise(
    Gene = str_c(Gene, collapse = ", "),
    # 合并组别并去重,避免重复显示同一组别
    Group = str_c(unique(Group), collapse = ", ")
  )

# 查看结果
print(df_final)

代码解释

  • separate_rows(Gene, sep = ", "):把每行的逗号分隔基因拆成单独行,确保每个基因对应一条记录,方便精准匹配组别。
  • str_detect():用来检测基因字符串中是否包含指定关键词,是实现规则匹配的核心函数。
  • case_when():按顺序执行匹配规则,你可以随时添加新的关键词和对应组别(比如后续新增其他耐药基因类别)。
  • 最后的合并步骤:如果不需要拆分单独基因,而是直接在原行显示所有对应组别,这个步骤可以帮你还原成输入时的格式。

不拆分行的简化版本

如果你不想拆分基因到单独行,直接在原数据框新增Group列,也可以用这个简化写法:

df %>%
  mutate(
    Group = map_chr(Gene, function(gene_str) {
      # 拆分当前行的基因列表
      genes <- str_split(gene_str, ", ")[[1]]
      # 给每个基因匹配组别
      groups <- case_when(
        str_detect(genes, "CTX|CMY") ~ "beta-lactamases",
        str_detect(genes, "VIM") ~ "Vancomycin",
        TRUE ~ "Unknown"
      )
      # 合并组别并去重
      str_c(unique(groups), collapse = ", ")
    })
  )

扩展建议

你可以根据实际的耐药基因分类规则,不断补充case_when里的条件,比如添加:

  • str_detect(Gene, "KPC") ~ "Carbapenemases"
  • str_detect(Gene, "MRSA") ~ "Methicillin"
    等等,完全适配你的数据库需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:00:18