在R语言中识别复购行为:用户-物料维度的季度复购数据筛选需求
嘿,我来帮你搞定这个R语言里的复购数据统计需求!根据你的描述,核心是按「用户-物料」维度统计购买频次(或者复购次数),还可以扩展到按年/季度拆分。我分步骤给你演示:
1. 先准备数据(模拟你的数据集)
先模拟你给出的样例数据,方便后续操作:
df <- data.frame( User = c(1,1,2,2,3,1,2,2,2), Material = c(10001,10002,10003,10002,10004,10001,10003,10002,10002), Date = c(20150119,20150120,20160121,20181212,20181110,20150419,20160421,20180912,20180612) )
2. 转换日期格式(可选但重要)
如果后续要按年/季度统计,得先把Date列转换成R能识别的日期格式:
df$Date <- as.Date(as.character(df$Date), format = "%Y%m%d")
3. 核心需求:按用户-物料统计总复购频次
这里用dplyr包(数据处理最常用的工具)来实现,代码直观易懂:
library(dplyr) # 分组统计每个用户对每个物料的总购买次数 total_recurring <- df %>% group_by(User, Material) %>% summarise(RecurringPurchasing = n(), .groups = "drop") # n()就是统计每组的行数,也就是购买次数 # 如果你只需要有复购的记录(即购买次数≥2),再加个过滤: total_recurring_filtered <- total_recurring %>% filter(RecurringPurchasing >= 2) # 查看结果 print(total_recurring_filtered)
运行后就能得到你想要的输出:
# A tibble: 3 × 3 User Material RecurringPurchasing <dbl> <dbl> <int> 1 1 10001 2 2 2 10002 3 3 2 10003 2
如果不想用dplyr,用base R的aggregate函数也能实现:
# base R 版本 total_recurring_base <- aggregate(. ~ User + Material, data = df, FUN = length) names(total_recurring_base)[3] <- "RecurringPurchasing" # 过滤掉单次购买的记录 total_recurring_base_filtered <- total_recurring_base[total_recurring_base$RecurringPurchasing >= 2, ]
4. 扩展需求:按年/季度统计复购频次
如果要拆分到每年每季度,只需要在分组时加上年季度维度即可:
# 先新增年季度列 df <- df %>% mutate(YearQuarter = format(Date, "%Y-Q%q")) # 格式化为"2015-Q1"这样的形式 # 按用户-物料-年季度统计 quarterly_recurring <- df %>% group_by(User, Material, YearQuarter) %>% summarise(RecurringPurchasing = n(), .groups = "drop") print(quarterly_recurring)
输出会显示每个用户在每个季度对每个物料的购买次数,比如:
# A tibble: 9 × 4 User Material YearQuarter RecurringPurchasing <dbl> <dbl> <chr> <int> 1 1 10001 2015-Q1 1 2 1 10001 2015-Q2 1 3 1 10002 2015-Q1 1 4 2 10002 2018-Q3 2 5 2 10002 2018-Q4 1 6 2 10003 2016-Q1 1 7 2 10003 2016-Q2 1 8 3 10004 2018-Q4 1
小说明
这里的RecurringPurchasing是总购买次数,如果你的需求是排除首次购买的复购次数(即总次数-1),只需要把summarise里的n()改成n()-1即可,比如:
summarise(RecurringPurchasing = n() - 1, .groups = "drop")
内容的提问来源于stack exchange,提问作者Timothy_Goodman
相关产品推荐
相关产品推荐

