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

在R中如何将宽格式数据转为目标长格式?含df1转df2及优化方案

解决方案

一、从df1转换到df2

df1是长格式数据,要得到df2的宽格式结构,使用tidyr包的pivot_wider()函数即可,将variable列的类别转为列名,value列对应填充数值,以id和year为分组依据:

library(tidyr)
df2 <- pivot_wider(df1, 
                   id_cols = c(id, year), 
                   names_from = variable, 
                   values_from = value)

二、从df直接转换到df2的简便方法

无需生成中间的df1,可通过两次透视一步完成转换:先将年份列转为长格式的year列,再把variable列的类别转为宽格式的列名:

library(tidyr)
df2 <- df %>%
  pivot_longer(cols = 3:5, 
               names_to = "year", 
               values_to = "temp_value") %>%
  pivot_wider(id_cols = c(id, year), 
              names_from = variable, 
              values_from = temp_value) %>%
  mutate(year = as.integer(year)) # 可选,将year转为整数类型匹配示例格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:03:36