在SAS合并中是否有选择非关键变量的内置方法?
如果您有多个具有相同变量名的数据集(数百个),并且希望通过一个键将它们合并,那么是否有一种简单的方法来控制非键变量的变量值?一种方法是对merge语句进行重命名,然后编写另一个步骤,使用这些重命名的变量计算数组中最频繁的值……但是我真的想知道是否有一种内置的方法来处理这个问题。例如:在SAS合并中是否有选择非关键变量的内置方法?,sas,Sas,如果您有多个具有相同变量名的数据集(数百个),并且希望通过一个键将它们合并,那么是否有一种简单的方法来控制非键变量的变量值?一种方法是对merge语句进行重命名,然后编写另一个步骤,使用这些重命名的变量计算数组中最频繁的值……但是我真的想知道是否有一种内置的方法来处理这个问题。例如: data ds1; infile datalines dsd delimiter=' '; input var1 $ var2; datalines; a 1 b 2 ; run; dat
data ds1;
infile datalines dsd delimiter=' ';
input var1 $ var2;
datalines;
a 1
b 2
;
run;
data ds2;
infile datalines dsd delimiter=' ';
input var1 $ var2;
datalines;
a
b 2
;
run;
data ds3;
infile datalines dsd delimiter=' ';
input var1 $ var2;
datalines;
a 1
b
;
run;
data ds123;
merge ds1 ds2 ds3;
by var1;
run;
此代码将“拾取”最右边的var2,即数据集ds123:
a 1
b
但我可能希望它是:
a 1
b 2
因为这将匹配最频繁的值。使用SQL连接和合并函数。指定合并中的首选项顺序,并将使用该顺序中的第一个非缺失项
proc sql noprint;
create table ds123 as
select a.var1,
coalesce(a.var2,b.var2,c.var2) as var2
from ds1 as a,
ds2 as b,
ds3 as c
where a.var1 = b.var1
and b.var1 = c.var1;
quit;
为什么不将它们全部附加在一起,然后执行
proc-means
,或者proc-sql
groupby?是的,这样就可以了。非常感谢。