在R中如何基于数据框现有列的条件创建分类新列
解决方案
方法1:基础R实现
直接用嵌套ifelse即可完成赋值:
pred$new_col <- ifelse(pred$V1 == 1, "Intermediate", ifelse(pred$V2 == 1, "Long", ifelse(pred$V3 == 1, "Short", NA)))
方法2:dplyr包实现(逻辑更清晰)
如果你习惯使用tidyverse工具链,用case_when写法可读性更强:
library(dplyr) pred <- pred %>% mutate(new_col = case_when( V1 == 1 ~ "Intermediate", V2 == 1 ~ "Long", V3 == 1 ~ "Short", TRUE ~ NA_character_ ))
因为你的示例数据中每行仅有V1/V2/V3中的一列取值为1,两种方法都不会出现匹配冲突,最终生成的新列完全符合指定的赋值规则。
内容的提问来源于stack exchange,提问作者Debutant
相关产品推荐
相关产品推荐

