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

R语言中如何重塑计算后的DataFrame以实现目标宽格式输出?

长格式转指定宽格式的实现方案

完整代码流程

从原始数据定义到最终格式转换的全流程如下:

# 1. 定义原始数据框
Category = c("New", "Fixed", "Regular")
`Jan 2014` = c(-418518172, 24425087, 0.3016606)
`Feb 2014` = c(-168947846, 17919651, -0.7212493)
`Mar 2014` = c(-168846, 17544, -0.775493)
df1 <- data.frame(Category, `Jan 2014`, `Feb 2014`, `Mar 2014`, check.names = FALSE)

Category = c("New", "Fixed", "Regular")
`Jan 2014` = c(-8172, -8524, 0.5060900)
`Feb 2014` = c(-1686, 19929, -0.85059894)
`Mar 2014` = c(-2424246, 1232324, -0.7217593)
df2 <- data.frame(Category, `Jan 2014`, `Feb 2014`, `Mar 2014`, check.names = FALSE)

# 2. 计算目标百分比列
calculate_df <- cbind(df1, (df1[-1]/df2[-1])*100)
# 可选:重命名计算列,避免与原始列混淆
colnames(calculate_df) <- c("Category", "Jan 2014_raw", "Feb 2014_raw", "Mar 2014_raw",
                            "Jan 2014_calc", "Feb 2014_calc", "Mar 2014_calc")

# 3. 转为长格式(对应当前输出)
library(tidyr)
long_df <- calculate_df %>%
  select(Category, ends_with("_calc")) %>% # 仅保留计算后的数据
  pivot_longer(
    cols = -Category,
    names_to = "Date",
    values_to = "Values",
    names_prefix = "(.*)_calc" # 提取纯日期名称
  )

# 4. 重塑为目标宽格式:分类为行,日期为列
wide_df <- long_df %>%
  pivot_wider(
    names_from = Date,
    values_from = Values
  )

关键说明

  • 若已得到包含Category、Date、Values的长格式数据,直接执行最后一步pivot_wider即可生成目标宽格式。
  • 最终输出的wide_df结构:每行对应一个分类(New/Fixed/Regular),每列对应一个日期,单元格值为计算后的百分比结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:02:40