0

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

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

我必须使用宏来完成这个简单的任务吗?请给我一些光!

4

2 回答 2

1

一种直接的方法是只合并而不使用 by 语句和使用保留:

data WANT (drop=temp);
    merge DATA1 DATA2 (rename=(GM=temp));
    retain GM;
    if _N_=1 then GM=temp;
run;

所以基本上你把两个数据集放在一起。因为没有副语句,它将连接两个数据集的第一条记录,两个数据集的第二条记录,依此类推。

在第一个记录中(如果N =1),您获取平均值并将其放入将记住最后一个值的变量中(保留 GM)。因此,在记录 2、3 等中,值仍将是您在记录 1 中放入的值。

为了保持干净,我在输入中重命名了您的 GM 变量,因此它可以用作保留变量的名称。当然,我删除了冗余变量。

您还可以使用宏变量或 proc sql 来解决此问题。但最好保持简单。

于 2013-09-17T20:25:06.983 回答
0

这是一种稍微简单的类似方法。

data want;
set data1;
if _n_=1 then set data2;
run;
于 2013-09-18T07:55:01.653 回答