我有一个大型 SAS 数据表,其中包含一堆针对我的整个基本客户群 (Master_v01) 的指标。 我有一个单独的数据表,其中包含要从分析中排除的客户列表 (Excluded_Cust)。
是否可以做这样的事情:
data Master_v02;
set Master_v01;
where cust not in (select cust from Excluded_Cust);
run;
这可能吗?
如果没有,实现我期望的目标的最佳方法是什么,让我的基表与那些我希望排除的客户从数据中删除?
以下是将宏
变量与 where 子句一起使用的另一种方法:
proc sql noprint;
select
quote(cust)
into
:cust_exclude
separated by
" or cust ne "
from
Excluded_Cust
;
quit;
data Master_v02;
set Master_v01;
where cust ne &cust_exclude;
run;
我的数据步骤代码有点生疏,但您可以通过查找值并检查匹配项来执行此操作。 我认为这是:
data Master_v02;
set Master_v01;
set Excluded_Cust key=cust;
if _iorc_ = 0 then delete;
run;
当然,建议在Excluded_Cust
中使用cust
指数。
我能想到的两种方法:
1.程序
proc sql;
create table Master_v02 as
select *
from Master_v01
where cust not in (select cust from Excluded_cust);
quit;
2.数据步骤合并
首先按客户对数据集进行排序Master_V01和Excluded_cust,然后:
data Master_V02;
merge Master_V01 (in=Mast)
Excluded_cust (in=Excl);
by cust;
if Mast and not Excl;
run;