R语言中如何对多个值进行cast转换实现长表转宽表
R语言多值列cast宽转换实现方案
你需要实现的是将长结构数据按year维度展开,同时保留val、cap两个值列的宽整形操作,可通过以下两种常用方法实现:
方法1:使用tidyr包的pivot_wider(tidyverse生态推荐方案)
# 加载依赖包 library(tidyr) # 执行多值列宽转换 result <- pivot_wider( data = asd, id_cols = week, names_from = year, values_from = c(val, cap), names_sep = "_" )
运行后得到的结果列名格式、数值都和需求匹配。
方法2:使用reshape2包的dcast(传统cast类函数方案)
# 加载依赖包 library(reshape2) # 多值列dcast转换 result <- dcast( data = asd, week ~ year, value.var = c("val", "cap") )
如果需要调整列顺序和期望输出完全对齐,可以搭配dplyr的select函数实现:
library(dplyr) result <- result %>% select(week, `2019_val`, `2020_val`, `2019_cap`, `2020_cap`)
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

