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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:51:32