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

R语言如何提取数据框所有行列组合及拼接名称生成新数据框

R语言实现数据框行列组合转长表

首先提供示例测试数据的构造代码,方便直接复现运行:

# 构造示例数据框
df <- data.frame(a1 = c(4, 2, 6, 9, 13),
                 a2 = c(56, 1, 47, 2, 3),
                 a3 = c(4, 6, 9, 11, 85),
                 a4 = c(6, 15, 4, 12, 3),
                 a5 = c(54, 94, 3, 2, 75))
rownames(df) <- c("a1","a2","a3","a4","a5")

方法1:Base R 无依赖实现

不需要安装加载任何第三方包,直接用R原生函数即可实现,输出顺序完全匹配需求:

result_df <- data.frame(
  Step = paste0(rep(rownames(df), each = ncol(df)), rep(colnames(df), times = nrow(df))),
  Value = as.vector(t(as.matrix(df)))
)
  • 实现逻辑:行名按每个值重复列数的规则生成,列名按整体重复行数的规则生成,二者直接拼接得到Step列;将原数据框转为矩阵后转置再拉平为向量,保证取值顺序为行优先,和Step标识一一对应。

方法2:tidyverse 生态实现

如果日常使用tidyverse流程处理数据,可以用pivot_longer快速完成宽转长操作,代码可读性更强:

library(tidyr)
library(tibble)

result_df <- df |> 
  rownames_to_column(var = "row_id") |> 
  pivot_longer(cols = -row_id, names_to = "col_id", values_to = "Value") |> 
  mutate(Step = paste0(row_id, col_id), .keep = "unused") |> 
  select(Step, Value)

两种方法输出结果完全一致,均为25行2列的结构,Step列按a1a1、a1a2……a5a5的顺序排列,Value列对应原数据框对应行列位置的数值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:36:25