2016-11-14 50 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; 

讓我看看我會怎麼解決「複製」的數據問題。