【问题标题】:SAS - issue in merging two datasetsSAS - 合并两个数据集的问题
【发布时间】:2016-11-18 21:26:58
【问题描述】:

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

我也想学习其他方法以备将来使用。

【问题讨论】:

  • 请简化您的问题,以便清楚您想要得到什么。如前所述,很难看出你想要得到什么以及问题可能是什么。如果你想自己解决这个问题,SAs 文档中有一个关于组合数据集的部分support.sas.com/documentation/cdl/en/lrcon/68089/HTML/default/…
  • 您当前正在堆叠/追加未合并的数据集。合并并排引入记录,堆栈添加行。明确您的要求。
  • @Reeza 它正在将 table1 的数据与 table2 的数据相加(按 TPMC 和日期排序)。但由于没有 ET(点 . 那里),我不希望这一行出现在决赛桌中。
  • 然后一个 WHERE 应该过滤掉结果。发布您的代码和日志 - 请通过编辑您的问题,而不是在 cmets 中。

标签: sas


【解决方案1】:

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

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

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

【讨论】:

  • 无表列名不完全相同。有些也不同。
【解决方案2】:

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

data table2;
    set have001 have002;
run;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多