如何在R中基于ID列字符值添加诊断标记新列
给R数据框添加诊断状态列的解决方法
用dplyr的mutate + ifelse实现
你之前尝试的方向是对的,大概率是判断条件没写对。要匹配多个ID值,得用%in%运算符,而不是单个的==。直接看代码:
library(dplyr) # 你的原始数据 ID <- c("a1", "a2", "a3", "b2", "b3", "d4") score <- c(23,35,45,57,83,90) df <- data.frame(ID, score) # 新增diagnosis列 df <- df %>% mutate(diagnosis = ifelse(ID %in% c("a2", "d4"), 1, 2)) # 查看结果 df
运行后输出就是你想要的:
ID score diagnosis 1 a1 23 2 2 a2 35 1 3 a3 45 2 4 b2 57 2 5 b3 83 2 6 d4 90 1
更易扩展的写法:用case_when
如果之后需要增加更多诊断规则,case_when会比ifelse更清晰:
df <- df %>% mutate(diagnosis = case_when( ID %in% c("a2", "d4") ~ 1, TRUE ~ 2 # 所有没匹配到的情况都标记为2 ))
不用dplyr的基础R写法
要是不想加载额外包,直接用基础R也能搞定:
df$diagnosis <- ifelse(df$ID %in% c("a2", "d4"), 1, 2)
内容的提问来源于stack exchange,提问作者dplyr
相关产品推荐
相关产品推荐

