SAS:组合两种不同格式的数据集

时间:2013-09-17 19:42:45

标签: merge sas dataset

我有两个格式不同的数据集

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合并。

我是否必须使用宏来完成这个简单的任务?请告诉我一些光!

2 个答案:

答案 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;