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

如何利用变量名修改大型dataframe中列的取值?

解决方法:将数据框中1/0替换为yes_列名/no_列名

基础R实现

无需额外依赖包,通过lapply遍历列并结合列名完成替换:

# 示例数据框
df <- data.frame(x = c(1,0,0,1),
                 y = c(0,0,1,1))

# 执行替换逻辑
df[] <- lapply(names(df), function(col_name) {
  ifelse(df[[col_name]] == 1, paste0("yes_", col_name), paste0("no_", col_name))
})

用df[]赋值可以确保结果保持数据框结构,不会被转换为列表。

dplyr(tidyverse)实现

如果习惯使用tidyverse工具链,可借助across结合cur_column()获取当前列名:

library(dplyr)

df <- df %>%
  mutate(across(everything(), ~ifelse(.x == 1, paste0("yes_", cur_column()), paste0("no_", cur_column()))))

across(everything())会对所有列应用替换逻辑,适配大型数据框的批量处理需求。

执行后得到的结果如下:

> df
       x      y
1 yes_x  no_y
2 no_x   no_y
3 no_x   yes_y
4 yes_x  yes_y

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:45:37