如何基于多条件筛选拥有完整交易历史的客户数据?
保留同时有首次和末次到店记录的客户所有交易数据(Excel & R 操作方法)
Excel 操作步骤
- 新增一列辅助列(比如D列),表头设为「是否保留」
- 在D2单元格输入公式:
=AND(COUNTIFS(A:A,A2,B:B,"Yes")>0,COUNTIFS(A:A,A2,C:C,"Yes")>0),回车后下拉填充所有行。这个公式会检查当前客户是否同时存在至少一条首次到店、末次到店记录,满足就返回TRUE,否则返回FALSE - 选中整个数据区域(包含表头),点击「数据」选项卡的「筛选」按钮
- 点击D列的筛选箭头,只勾选「TRUE」,确定后剩下的就是符合要求的所有客户记录
- (可选)选中筛选后的行复制,粘贴到新工作表即可保存结果
R 操作步骤
假设你的数据存储在名为df的数据框中,按以下步骤处理:
- 若数据来自CSV文件,先导入数据:
数据已在R环境中的话跳过此步df <- read.csv("你的数据文件路径.csv", stringsAsFactors = FALSE) - 筛选符合条件的客户及所有记录:
# 提取有首次到店记录的客户名单 has_first <- unique(df$Name[df$是否为首次到店客户 == "Yes"]) # 提取有末次到店记录的客户名单 has_last <- unique(df$Name[df$是否为末次到店 == "Yes"]) # 取两者交集,得到同时满足条件的客户 target_clients <- intersect(has_first, has_last) # 提取这些客户的所有交易记录 result_df <- df[df$Name %in% target_clients, ] - 查看结果或导出:
运行print(result_df)可直接查看处理后的数据;要导出为CSV文件的话执行:write.csv(result_df, "处理后的数据.csv", row.names = FALSE)
内容的提问来源于stack exchange,提问作者Margaux
相关产品推荐
相关产品推荐

