我有两个格式不同的数据集
data1看起来像:
data1:
YYMM test1
1101 98
1102 98
1103 94
1104 92
1105 99
1106 91
数据2只是一个看起来像:
的宏观意思data2:
GM
95
我想将两者结合起来,看起来像这样:
WANT:
YYMM test1 GM
1101 98 95
1102 98 95
1103 94 95
1104 92 95
1105 99 95
1106 91 95
我确定有不同的方法来配置这个,但我认为我应该将95放入一列并与data1合并。
我是否必须使用宏来完成这个简单的任务?请告诉我一些光!
答案 0 :(得分:1)
一种简单的方法是在没有声明和使用retain的情况下合并:
data WANT (drop=temp);
merge DATA1 DATA2 (rename=(GM=temp));
retain GM;
if _N_=1 then GM=temp;
run;
所以基本上你把两个数据集放在一起。 因为没有by语句,所以它会将两个数据集的第一条记录,两个数据集的第二条记录连接在一起,等等。
在第一条记录中(如果 N = 1),您获取平均值并将其放入一个变量中,该变量将记住最后一个值(保留GM)。 因此,在记录2,3等中,该值仍将是您在记录1中输入的值。
为了保持干净,我在输入上重命名了GM变量,因此可以将其用作保留变量的名称。当然,我删除了冗余变量。
您还可以使用宏变量或proc sql来解决此问题。但最好保持简单。
答案 1 :(得分:0)
这是一种类似的方式,稍微简单一些。
data want;
set data1;
if _n_=1 then set data2;
run;