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

如何在R dataframe中合并重复订单号并转宽格式求和

解决方法

要实现需求,需要先对重复的「订单号+SKU」组合求和,再转换为宽格式,具体步骤如下:

1. 构造测试数据

先还原你的popcorn数据框:

popcorn <- data.frame(
  年份 = c(2016, 2016, 2016, 2016),
  订单号 = c(4920299, 4920307, 4920307, 4920485),
  Product_SKU = c("Medium", "Small", "Small", "Large"),
  价格 = c(4.5, 3.5, 3.5, 5)
)

2. 分组求和+转宽格式

使用dplyr和tidyr包处理,有两种常用方式:

方式一:用spread()(旧版函数)

先按年份、订单号、Product_SKU分组,对价格求和(确保每个组合唯一,避免转宽时冲突),再用spread()转宽格式并填充缺失值为0:

library(dplyr)
library(tidyr)

# 分组求和
popcorn_sum <- popcorn %>%
  group_by(年份, 订单号, Product_SKU) %>%
  summarize(总价 = sum(价格), .groups = "drop")

# 转换为宽格式
popcorn_wide <- popcorn_sum %>%
  spread(key = Product_SKU, value = 总价, fill = 0)

方式二:用pivot_wider()(新版推荐)

pivot_wider()是spread()的替代函数,功能更灵活,可直接在转宽时设置缺失值填充规则:

library(dplyr)
library(tidyr)

popcorn_wide <- popcorn %>%
  group_by(年份, 订单号, Product_SKU) %>%
  summarize(总价 = sum(价格), .groups = "drop") %>%
  pivot_wider(
    names_from = Product_SKU,
    values_from = 总价,
    values_fill = 0
  )

运行后得到的popcorn_wide就是你需要的目标表格。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:05:48