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

如何用R批量修改title_1至title_100等多列的指定值?

批量替换R数据框中多列的分类值

先确认你的示例数据框:

df <- data.frame(id=c(1,1,3,4,5,6,7),
                 title_1=c("H","M","","M","L","L","H"),
                 title_2=c("M","M","","L","L","L","H"),
                 title_3=c("H","H","M","L","","M","M"))

针对你需要批量处理所有title_开头列的需求,提供两种常用解决方案:

方法一:使用dplyr(tidyverse生态)

dplyr的across()函数可以轻松批量选择列并应用操作,代码简洁易读:

library(dplyr)

# 方案1:用case_match做匹配替换
df_processed <- df %>%
  mutate(across(starts_with("title_"), ~ case_match(.,
                                                    "" ~ 0,
                                                    "H" ~ 3,
                                                    "M" ~ 2,
                                                    "L" ~ 1)))

# 方案2:用recode做键值对替换,更简洁
df_processed <- df %>%
  mutate(across(starts_with("title_"), ~ recode(.,
                                                "" = 0,
                                                "H" = 3,
                                                "M" = 2,
                                                "L" = 1)))

方法二:使用Base R(无需额外安装包)

如果不想加载第三方包,可以用Base R的批量处理方式:

# 筛选所有以title_开头的列的索引
title_cols <- grep("^title_", names(df))

# 定义替换规则的键值对
replace_map <- c("" = 0, "H" = 3, "M" = 2, "L" = 1)

# 批量替换并转换为数值型
df_processed_base <- df
df_processed_base[title_cols] <- lapply(df_processed_base[title_cols], function(col) {
  # 按替换规则映射,再转数值
  as.numeric(replace_map[col])
})

两种方法都能实现批量替换,根据你的使用习惯选择即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:03:31