Sas 如果两个数据集上的条件都满足,则合并
我有两个数据集,只有在两个数据集内的数据集都满足某个条件时,我才希望它们合并 下面的代码不正确Sas 如果两个数据集上的条件都满足,则合并,sas,Sas,我有两个数据集,只有在两个数据集内的数据集都满足某个条件时,我才希望它们合并 下面的代码不正确 data cohrt2_base_pre_&m2. cohrt2_base_a4lmig_&m2.; length Base_indicator_&m2. $20.; merge if pre_cb_&m3. = pre_cb_&m4. then do; custon.cohrt_base_pre_&m1. (in
data cohrt2_base_pre_&m2. cohrt2_base_a4lmig_&m2.;
length Base_indicator_&m2. $20.;
merge if pre_cb_&m3. = pre_cb_&m4. then do;
custon.cohrt_base_pre_&m1. (in=a)
VALIAT_B.STATPST_M1_&m2. (in=b drop=base
(rename=(priceplan=Pre_priceplan_&m4.)));
by kit_sim msisdn
end;
PROC SQL可以做到这一点:
proc sql ;
create table want (drop=base) as
select a.*, b.*, b.priceplan as pre_priceplan_&m4
from custon.cohrt_base_pre_&m1 a
inner join
VALIAT_B.STATPST_M1_&m2 b on a.kit_sim = b.kit_sim
and a.msisdn = b.msisdn
and pre_cb_&m3 = pre_cb_&m4 ;
quit ;
proc-sql;
创建所需表格(drop=base)为
选择a.*、b.*、b.价格计划作为预定价计划(&m4)
来自custon.cohrt_base_pre_&m1 a
内连接
a.kit\U sim=B.kit\U sim上的有效状态M1和m2 B
和a.msisdn=b.msisdn
和pre_cb_&m3=pre_cb_&m4;
退出
所以这两个数据集中都存在pre_cb_&m3和pre_cb&m4,您想过滤它们吗?如果是,那么您可以添加一个where选项,类似(未测试):
如果变量确实存在于两个数据集中,它们将在合并中发生冲突,这通常是个坏主意。另一个想法是为每个数据集创建一个视图,然后合并这两个视图。这将允许您避免冲突。如果我想添加以下内容..sql中的代码会是什么样子?如果是a和b,则基准指示器=常数;如果是a而不是b,则基准指示器=搅动;如果是b,而不是a,则基准指示器为'Acquisition';如果预断路器和m3。均衡器后断路器和m4。然后输出cohrt2_base_a4lmig_m2。;
data cohrt2_base_pre_&m2.
cohrt2_base_a4lmig_&m2.
;
length Base_indicator_&m2. $20.;
merge
custon.cohrt_base_pre_&m1. (where=(pre_cb_&m3. = pre_cb_&m4.)
in=a
)
VALIAT_B.STATPST_M1_&m2. (where=(pre_cb_&m3. = pre_cb_&m4.)
drop=base
rename=(priceplan=Pre_priceplan_&m4.)
in=b
);
by kit_sim msisdn;
run;