在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
相关产品推荐
相关产品推荐

