2016-11-14 51 views
0

我有以下TABLE_1:SAS - 问题在合并两个数据集

TPMC PWC PWSC Site ET Date Time DIAM PXMC SF 
7101 7101 US000521 1 Lathing 08Nov2016 11:58 890.3  1 
7102 7102 US000361 1 Lathing 02Nov2016 13:01 878.1  1 
7102 7102 UC000348 2 Lathing 07Nov2016 18:22 877.3  1 
7106 7106 UC00424 1 Lathing 05Oct2016 9:43 890,4  1 
7106 7106 UC00437 3 Lathing 07Nov2016 18:23 877.1  1 
7106 7106 UC309 4 Lathing 07Nov2016 18:26 877.8  1 
7107 7107 UC05327 1 Lathing 06Oct2016 8:41 837  1 
7107 7107 UC200 2 Lathing 13Oct2016 12:53 890.55  1 
7108 7108 UC000361 3 Lathing 02Nov2016 13:01 878.1  1 
7108 7108 UC00432 1 Lathing 07Nov2016 18:25 877.8  1 
7108 7108 UC106 2 Lathing 03Oct2016 9:37 890.3  1 

和TABLE_2:

TPMC PWC PWSC Site ET Date Time DIAM PXMC SF 
7101 . . . . 01JAN16 . . . . 
7101 . . . . 02JAN16 . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
7101 . . . . 30DEC16 . . . . 
7101 . . . . 31DEC16 . . . . 
7102 . . . . 01JAN16 . . . . 
7102 . . . . 02JAN16 . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
7102 . . . . 30DEC16 . . . . 
7102 . . . . 31DEC16 . . . . 

我想要的方式,输出看起来应该像什么合并两个表:

TPMC PWC PWSC Site ET Date Time DIAM PXMC SF 
7101 . . . . 01JAN16 . . . . 
7101 . . . . 02JAN16 . . . . 
. . . . . . . . . . 
7101 7101 US000521 1 Lathing 08Nov2016 11:58 890.3  1 
. . . . . . . . . . 
. . . . . . . . . . 
7101 . . . . 30DEC16 . . . . 
7101 . . . . 31DEC16 . . . . 
7102 . . . . 01JAN16 . . . . 
7102 . . . . 02JAN16 . . . . 
. . . . . . . . . . 
7102 7102 US000361 1 Lathing 02Nov2016 13:01 878.1  1 
7102 7102 UC000348 2 Lathing 07Nov2016 18:22 877.3  1 
. . . . . . . . . . 
. . . . . . . . . . 
7102 . . . . 30DEC16 . . . . 
7102 . . . . 31DEC16 . . . . 

如何使用'Proc SQL'或'Data Merge'或'Combine'来完成?

在最简单的形式,我用:

data data_set; 
    set table_1 table_2; 
run; 

但这生产日期的重复值。例如:

TPMC PWC ET PWSC Site Date Time DIAM PXMC SF 
7618 . . . 1 29SEP2016  . . . 
7618 . . UC00424 2 30SEP2016  . . . 
7618 . Lathing UC00437 1 30SEP2016 17:15 890.500000 . . 
7618 . Lathing UC309 2 30SEP2016 20:32 890.500000 . . 
7618 . . . 3 01OCT2016  . . . 
7618 . . . 1 02OCT2016  . . . 

我不知道我该如何避免这种情况。我不希望没有'ET'的行(即ET是'。'或空,我不想要这些行)。

另外我想学习其他方法供将来使用。

+0

请简化你的问题,然后清楚你想要得到什么。如上所述,很难看到你想要得到什么以及可能会出现什么问题。如果您想自行解决数据集,SAs文档中有一个部分http://support.sas.com/documentation/cdl/en/lrcon/68089/HTML/default/viewer.htm#n1tgk0uanvisvon1r26lc036k0w7.htm – Reeza

+0

您目前正在堆叠/附加不合并的数据集。合并带来记录并且堆叠增加行。澄清你的要求。 – Reeza

+0

@Reeza它将table1的数据与table2的数据相加(按TPMC和Date排序)。但是因为没有ET(点。那里),我不希望这一行出现在决赛桌上。 – ZeekDSA

回答

1

追加2个表的一种方法是使用proc sql。

proc sql; 
select t1.* from table1 t1 
union all 
select t2.* from table2 t2; 
quit; 

确保2个表具有完全相同的列名并且结构相同。如果两个表都有相同的记录,那么最终会得到需要过滤的重复行。

+0

没有表列名称不完全相同。有些也不同。 – ZeekDSA

0

我仍然会用我的答案贴在上面的帖子...

data table2; 
    set have001 have002; 
run; 

让我看看我会怎么解决“复制”的数据问题。