R语言中如何将退货计数关联到客户ID并计算客户退货率
实现步骤
第一步:基于已生成的returnrate表计算单客户退货率
对已统计好的计数结果按客户ID分组,聚合计算退货率:
library(dplyr) # 计算每个客户的退货率 customer_return_rate <- returnrate %>% group_by(customer_id) %>% summarise( # 退货次数为returnyesno为1对应的n值,无退货则取0 return_cnt = sum(ifelse(returnyesno == 1, n, 0)), # 总订单次数为该客户所有n值的和 total_cnt = sum(n), # 计算退货率,保留4位小数可按需调整 return_rate = round(return_cnt / total_cnt, 4) ) %>% # 可选操作:去掉中间计算列,仅保留客户ID和对应退货率 select(customer_id, return_rate)
第二步:将退货率关联回原数据集data4
使用左连接保证原数据集所有行都被保留,仅匹配对应客户的退货率:
data4_with_returnrate <- data4 %>% left_join(customer_return_rate, by = "customer_id")
如果需要直接修改原data4,直接把结果赋值回data4即可。
简化写法(无需提前生成returnrate表,一步完成统计+关联)
如果不需要单独留存按returnyesno拆分的计数结果,也可以直接从原数据集一步计算,执行效率更高:
data4 <- data4 %>% group_by(customer_id) %>% mutate( return_rate = round(sum(returnyesno == 1) / n(), 4) ) %>% ungroup()
内容的提问来源于stack exchange,提问作者Estelle
相关产品推荐
相关产品推荐

