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

如何在R语言中创建新列,将指定列值映射为对应数值?

在R中根据col2的值映射创建新列col3的方法

没问题,这在R里有好几种实用的实现方式,我给你列几个常用的,你可以根据自己的习惯选:

方法1:用dplyr的case_when(推荐,可读性强)

如果你平时常用tidyverse系列的工具,dplyr里的case_when()绝对是首选,它能清晰地处理多条件映射,就算以后要加更多规则也很方便:

# 先安装并加载dplyr(如果还没装的话)
# install.packages("dplyr")
library(dplyr)

# 假设你的数据框名为df,用mutate添加新列
df <- df %>%
  mutate(col3 = case_when(
    col2 == "MED" ~ 1,          # 当col2是"MED"时,col3赋值1
    col2 == "PAT" ~ 2,          # 当col2是"PAT"时,col3赋值2
    TRUE ~ NA_real_             # 其他情况默认设为NA,可根据需求修改
  ))

方法2:base R的ifelse(无需额外包)

要是不想加载新包,用base R原生的ifelse()也能搞定,适合简单的双条件场景:

# 直接给数据框添加col3列
df$col3 <- ifelse(df$col2 == "MED", 1,
                  ifelse(df$col2 == "PAT", 2, NA))
# 这里嵌套ifelse处理第二个条件,其他情况返回NA

方法3:因子转数值(适合col2只有两种取值的情况)

如果你的col2只有"MED"和"PAT"这两个唯一值,还可以用因子转换的方式,代码更简洁:

# 先把col2转成指定顺序的因子,再转成数值
df$col3 <- as.numeric(factor(df$col2, levels = c("MED", "PAT")))
# 注意:levels的顺序决定了数值映射——第一个level对应1,第二个对应2

小提示

如果你的数据中col2还有其他未提到的取值,记得根据实际需求处理这些情况:要么给它们设置一个默认值,要么提前过滤掉这些行,避免出现不符合预期的结果哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:25:06