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

R语言中将垂直DataFrame转换为水平格式的实现问题咨询

实现方案

你需要的是长表转宽表操作,和你猜测的melt()功能相反(melt()用于宽表转长表),以下是适配不同场景的实现方案,支持你真实场景下800万行数据、450个统计名称的转换需求:

方案1:tidyverse套件(代码最简洁,适合中小数据量)

用tidyr::pivot_wider()函数实现:

library(tidyr)
library(dplyr)

df2 <- df1 %>%
  pivot_wider(
    id_cols = c(Team_Code, Coef_Name, Year, Date),
    names_from = Stat_Name,
    values_from = Adj_Stat_Value
  )

方案2:data.table(800万行大数据量最优,运行速度最快)

千万级数据场景下推荐用data.table的dcast()函数,性能远高于tidyverse方案:

library(data.table)

setDT(df1)
df2 <- dcast(df1, Team_Code + Coef_Name + Year + Date ~ Stat_Name, value.var = "Adj_Stat_Value")
# 如需转回普通data.frame,补充执行 setDF(df2) 即可

两种方案都会自动根据Stat_Name的取值生成对应宽表列,不需要手动指定450个统计名称的列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:21:03