如何在R语言中搜索数据列多字符串并生成分类列
在R语言中根据药物列表匹配生成分类列
我有一个抗真菌药物的字符列表,想要在数据框的药物名称列中匹配这些字符串,为匹配到的行生成对应的分类标签,未匹配的留空。
示例药物列表
antifungals <- c("caspofungin", "fluconazole")
原始数据框
| patient | drug name |
|---|---|
| 1 | caspofungin |
| 2 | fluconazole |
| 2 | fluconazole |
| 3 | amoxicillin |
期望得到的数据框
| patient | drug name | category |
|---|---|---|
| 1 | caspofungin | antifungal |
| 2 | fluconazole | antifungal |
| 2 | fluconazole | antifungal |
| 3 | amoxicillin |
实现方案
方案1:Base R 原生实现
直接用ifelse结合%in%判断匹配情况,快速添加分类列:
# 先构造原始数据框 df <- data.frame( patient = c(1, 2, 2, 3), drug_name = c("caspofungin", "fluconazole", "fluconazole", "amoxicillin") ) # 生成分类列 df$category <- ifelse(df$drug_name %in% antifungals, "antifungal", "")
方案2:dplyr 包实现(tidyverse风格)
如果日常使用tidyverse工具链,用mutate+case_when的写法更灵活,方便后续扩展多分类规则:
library(dplyr) df <- df %>% mutate(category = case_when( drug_name %in% antifungals ~ "antifungal", TRUE ~ "" # 未匹配的情况留空 ))
内容的提问来源于stack exchange,提问作者lovebead33
相关产品推荐
相关产品推荐

