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

如何将单列长格式DataFrame转换为单行宽格式DataFrame?

单列长格式DataFrame转单行宽格式(保留原行名为列名)

以下是几种不同工具集的简便实现方式,适配你给出的test数据结构:

Base R 实现

直接利用转置函数快速完成,步骤极简:

test <- data.frame(c(1:5), row.names = LETTERS[1:5])
# 转置并转为数据框,原行名自动成为新列名
wide_df <- as.data.frame(t(test))
# 可选:移除自动生成的行名(原数据框的列名)
rownames(wide_df) <- NULL

转置后原数据框的行名会直接变成新数据框的列名,最终得到单行5列的宽格式结果。

dplyr + tidyr 实现

通过先提取行名为单独列,再使用pivot_wider完成转换:

library(dplyr)
library(tidyr)

test <- data.frame(value = 1:5, row.names = LETTERS[1:5]) %>%
  # 把原行名转为名为"row_id"的列
  tibble::rownames_to_column(var = "row_id") %>%
  # 按row_id的值生成列名,value列的内容填充对应位置
  pivot_wider(names_from = row_id, values_from = value)

提前给原数值列命名(比如value)会让代码更易读,避免自动生成的奇怪列名。

data.table 实现

借助data.table的dcast函数,配合行名提取完成转换:

library(data.table)

test <- data.frame(value = 1:5, row.names = LETTERS[1:5])
# 转为data.table并保留原行名为"row_id"列
dt <- as.data.table(test, keep.rownames = "row_id")
# 转换为宽格式,用.表示无分组行,最终移除多余的.列
wide_dt <- dcast(dt, . ~ row_id, value.var = "value")[, !".", with = FALSE]
# 可选:转回普通data.frame
wide_df <- as.data.frame(wide_dt)

这种方式处理大型数据集时效率更高,适合你的响应式大表场景。

内容的提问来源于stack exchange,提问作者Village.Idyot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:20:12