【发布时间】:2015-05-16 16:11:54
【问题描述】:
我有一个包含约 400 万笔交易记录的数据集,按 Customer_No 分组(每个 Customer_No 包含 1 个或多个交易,用顺序计数器表示)。每笔交易都有一个类型代码,我只对使用特定交易类型组合的客户感兴趣。加入表本身或在 Proc Sql 中使用 EXISTS 都不允许我有效地评估事务类型标准。我怀疑使用保留和执行循环的数据步骤会更快地处理数据集
数据集:
Customer_No Tran_Seq Tran_Type
0001 1 05
0001 2 12
0002 1 07
0002 2 86
0002 3 04
0003 1 07
0003 2 84
0003 3 84
0003 4 84
我尝试应用的标准:
所有 Customer_No 的 Tran_Type 只能在 ('04','05','07','84','86') 中, 如果使用了任何其他 Tran_Type,则删除该 Customer_No 的所有事务
Customer_No 的 Tran_Type 必须包括('84' 或 '86')AND '04',如果不满足此条件,则删除 Customer_No 的所有事务
我想要的输出:
Customer_No Tran_Seq Tran_Type
0002 1 07
0002 2 86
0002 3 04
【问题讨论】:
-
是您需要考虑的唯一代码还是还有更多?即这是对实际问题的简化吗?
-
我会使用retain 语句设置指标以跨ID 保存它们,评估last.ID 的状态,然后输出ID 列表。但这不是代码编写服务,因此您需要先尝试一下:)。
-
这是一种简化。实际代码为 3 个字符,共有 122 个字符。谢谢,我会试试你的方法
-
我认为 proc sql 可以很好地解决这个问题。您的查询结构是什么?
标签: sas