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

如何在R中将列名追加至对应列的每个观测值末尾?

在R中为数据框列值追加对应列名的方法

示例数据框

先构造一个匹配你需求的示例数据,方便测试代码:

df <- data.frame(
  Soccer_Brand = c("Adidas", "Nike", "Puma"),
  Basketball_Brand = c("Nike", "Under Armour", "Adidas"),
  stringsAsFactors = FALSE
)

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

适合习惯tidy语法的用户,代码简洁易读:

library(dplyr)

df_updated <- df %>%
  mutate(across(everything(), ~paste(.x, cur_column(), sep = "_")))
  • across(everything()) 遍历数据框所有列
  • cur_column() 获取当前处理列的列名
  • paste() 将列值与列名用下划线拼接

方法2:基础R实现(无需额外包)

如果不想加载第三方包,用基础R即可完成:

df_updated <- data.frame(
  lapply(names(df), function(col) paste(df[[col]], col, sep = "_")),
  stringsAsFactors = FALSE
)
# 可选:保留原列名
names(df_updated) <- names(df)

方法3:data.table(适合大数据集)

处理百万级以上数据时,data.table的效率更高:

library(data.table)

setDT(df)
for (col in names(df)) {
  df[[col]] <- paste(df[[col]], col, sep = "_")
}

输出结果示例

运行上述代码后,示例数据框会被修改为:

Soccer_BrandBasketball_Brand
Adidas_Soccer_BrandNike_Basketball_Brand
Nike_Soccer_BrandUnder Armour_Basketball_Brand
Puma_Soccer_BrandAdidas_Basketball_Brand

适配购物篮分析的后续处理

如果需要转成适合购物篮分析的格式,可以用tidyr转成长格式:

library(tidyr)

basket_data <- df_updated %>%
  pivot_longer(everything(), values_to = "item") %>%
  select(item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:50:27