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

R语言中基于赠果筛选数据行并批量计算购买支出均值的方案

解决思路与R代码实现

1. 核心逻辑

通过关联赠品记录与对应消费数据,再按赠品种类分组聚合,实现批量计算,无需手动循环。核心是利用Client(客户编号)和Visit(到店次数)两个字段,将赠品(Purchase=0)与同客户同次到店的后续消费(Purchase>0)绑定,再统一统计。

2. 基于tidyverse的高效实现

假设你的数据框名为store_data,代码如下:

library(tidyverse)

# 提取赠品记录,标记赠品种类
gift_records <- store_data %>%
  filter(Purchase == 0) %>%
  select(Client, Visit, Gift_Item = Item)

# 关联赠品与对应消费数据,批量计算各赠果的平均花费
gift_effect <- store_data %>%
  filter(Purchase > 0) %>%
  inner_join(gift_records, by = c("Client", "Visit")) %>%
  group_by(Gift_Item) %>%
  summarise(
    平均花费 = mean(Cost, na.rm = TRUE),
    有效交易数 = n()
  )

# 查看结果
print(gift_effect)

代码说明

  • filter(Purchase == 0)筛选所有赠品记录,重命名Item为Gift_Item便于后续识别
  • inner_join通过Client和Visit精准匹配,只保留有赠品的那次到店的消费数据
  • group_by(Gift_Item)自动按赠品种类分组,summarise直接计算均值和交易数,一次性处理所有赠果(包括Apple、Orange等)

3. 基础R替代方案(无需第三方包)

如果不想依赖tidyverse,用基础R函数也能实现:

# 提取赠品记录并重命名列
gift_records <- store_data[store_data$Purchase == 0, c("Client", "Visit", "Item")]
colnames(gift_records)[3] <- "Gift_Item"

# 关联消费数据与赠品记录
merged_data <- merge(
  store_data[store_data$Purchase > 0, ],
  gift_records,
  by = c("Client", "Visit")
)

# 批量计算各赠果的平均花费
gift_effect <- aggregate(
  Cost ~ Gift_Item,
  data = merged_data,
  FUN = function(x) mean(x, na.rm = TRUE)
)
colnames(gift_effect)[2] <- "平均花费"

print(gift_effect)

优势

  • 无需手动编写多组循环,代码自动遍历所有赠品种类
  • 所有结果统一存储在一个数据框中,方便后续分析或可视化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:37:42