SAS - 合并两个数据集的问题

时间:2016-11-14 07:19:10

标签: sas

我有以下table_1:

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 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是'。'或为空,我不想要那些行。)

此外,我想学习其他方法以供将来使用。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

我仍然会像上面的帖子那样坚持我的答案......

data table2;
    set have001 have002;
run;

让我看看如何解决“重复”数据问题。