R语言中如何合并客户详情表与购买行为表生成新表?
在R中合并客户详情与购买行为表
首先确保你已经安装并加载tidyverse包(包含数据处理常用的dplyr和tidyr):
install.packages("tidyverse") library(tidyverse)
1. 模拟你的两个表格(对应你提供的表结构)
根据你给出的表样式,先模拟示例数据:
# 客户详情表 customer_df <- tibble( customer_id = c(1, 2, 3), gender = c("Male", "Female", "Male"), age = c(25, 30, 40) ) # 客户购买行为表 purchase_df <- tibble( customer_id = c(1, 1, 2, 3), purchase_date = as.Date(c("2023-01-05", "2023-02-10", "2023-01-15", "2023-03-02")), amount = c(100, 200, 150, 300) )
2. 处理购买行为表并合并
我们需要先把购买行为的长表转成宽表(每个客户一行,对应多次购买的日期和金额),再和客户详情表合并:
# 对购买表按客户分组,给每个购买记录编号,再转宽 purchase_wide <- purchase_df %>% group_by(customer_id) %>% mutate(purchase_num = paste0("purchase_", row_number())) %>% # 生成购买序号 ungroup() %>% pivot_wider( id_cols = customer_id, names_from = purchase_num, values_from = c(purchase_date, amount), # 将日期和金额分别转成多列 names_sep = "_" # 列名用下划线分隔 ) # 合并客户详情表和处理后的购买表 final_df <- customer_df %>% left_join(purchase_wide, by = "customer_id")
运行后final_df就是你想要的输出格式,每个客户一行,包含基本信息和所有购买记录的日期、金额。
结果示例
最终表格结构如下:
| customer_id | gender | age | purchase_date_purchase_1 | purchase_date_purchase_2 | amount_purchase_1 | amount_purchase_2 |
|---|---|---|---|---|---|---|
| 1 | Male | 25 | 2023-01-05 | 2023-02-10 | 100 | 200 |
| 2 | Female | 30 | 2023-01-15 | NA | 150 | NA |
| 3 | Male | 40 | 2023-03-02 | NA | 300 | NA |
内容的提问来源于stack exchange,提问作者Hrx
相关产品推荐
相关产品推荐

