合并两个以上的数据集无法正常工作

问题描述 投票:0回答:1

我在sas中合并了两个以上的数据集,但输出并不是我预期的。原始数据集是:

data test;
input id days value date:date9.;
format date date9.;
datalines;
128330 150 3903053 01jul2016
;
run;

合并的基础:

data base1;
input id days1 value1 date1:date9.;
format date1 date9.;
datalines;
128330 0 3849050 01jun2015
128330 0 3827305 01jul2015
128330 0 3822779 01aug2015
128330 30 3771383 01feb2015
128330 0 3756117 01jan2015
128330 0 . 01nov2015
128330 0 3818253 01sep2015
128330 0 . 01oct2015
128330 90 3668595 01may2015
128330 60 3705683 01apr2015
128330 30 3690417 01mar2015
128330 0 3802639 01dec2015
;
run;

data base2;
input id days1 value1 date1:ddmmyy10.;
format date1 date9.;
datalines;
128330 0 3805129 1/01/2016
128330 0 3887603 1/02/2016
128330 30 3890093 1/03/2016
128330 60 3892583 1/04/2016
128330 90 3896073 1/05/2016
128330 120 3899563 1/06/2016
128330 150 3903053 1/07/2016
128330 180 3906543 1/08/2016
128330 210 3906543 1/09/2016
128330 240 3906543 1/10/2016
128330 270 3906543 1/11/2016
128330 300 3906543 1/12/2016
;
run;

data base3;
input id days1 value1 date1:ddmmyy10.;
format date1 date9.;
datalines;
128330 330 3906543 1/01/2017
128330 360 3906543 1/02/2017
128330 390 3906543 1/03/2017
128330 420 3906543 1/04/2017
128330 450 3906543 1/05/2017
128330 480 3906543 1/06/2017
128330 510 3906543 1/07/2017
128330 540 3906543 1/08/2017
128330 570 3906543 1/09/2017
128330 600 3906543 1/10/2017
128330 630 3906543 1/11/2017
;
run;

data merge1;
merge test(in=info) base1 base2 base3;
by id;
if info;
run;

输出只有十二行,属于base3:enter image description here

我期望:

enter image description here

我需要一个合并,因为我的工作基础有数千条记录,我需要通过id合并数据集。谢谢你的帮助。

sas
1个回答
1
投票

您不能合并这些数据集,因为您有多个数据集,每个ID有多个观察值。在这种情况下,MERGE将按顺序匹配观察值,并且值将被覆盖。请注意,如果您的BASEx数据集各自具有不同的ID值集,那么您从未从一个BASEx数据集中观察到与来自不同BASEx的观测值合并的观测值,那么它实际上可以工作。

因此,您有一种格式的三个数据集,每个数据集可以在每个ID上有多个观察点,您希望首先连接这些数据集,然后与每个ID只有一个观察点的其他数据集合并。

data base ;
  set base1-base3 ;
  by id;
run;

data want ;
  merge test base ;
  by id;
run;

如果您担心磁盘空间,可以使第一个数据步骤生成视图而不是数据集。

data base / view=base ;
  set base1-base3 ;
  by id;
run;
© www.soinside.com 2019 - 2024. All rights reserved.