R Shiny中使用tidyr/dplyr转置数据框未得到预期结果
问题根因
当前代码直接对宽格式指标字段调用pivot_wider,会生成「指标名_日期」格式的拼接列,和预期的「行维度为指标、列维度为日期」的转置结果不匹配,缺失了长表转换的中间步骤。
修正代码
library(stringr) library(tidyr) library(dplyr) dates <- c('2022-06-01','2022-06-02','2022-06-03','2022-06-04','2022-06-05') price <- c(11,18,15,10,15) Quantity <- c(20,19,14,19,17) Tax <- c(2,4,4,1,5) df <- data.frame(dates,price,Quantity, Tax) df <- df %>% mutate(dates = str_replace(str_sub(dates, start= -5), "-", "/")) %>% # 先将所有数值指标列转为长格式,拆分出指标名和对应值 pivot_longer(cols = !dates, names_to = "指标", values_to = "数值") %>% # 再按日期为列名转宽表 pivot_wider(names_from = dates, values_from = 数值) df
输出说明
运行后得到的结果第一列为指标名称(price、Quantity、Tax),后续每一列对应一个处理后的日期(06/01到06/05),单元格填充对应日期下的指标数值,完全匹配预期转置结构。
如果需要修改第一列的列名,直接修改pivot_longer中names_to参数的赋值即可。
内容的提问来源于stack exchange,提问作者BCqaunt
相关产品推荐
相关产品推荐

