繁体   English   中英

SAS PROC SQL连接和替换

[英]SAS PROC SQL join and replace

我有两个要加入的数据集。 小型数据集是我的基本数据集,并且具有如下数据(称为DSsmall):

ID   NAME   COV_DATE  PRODUCT
1   A_PART   1/1/2014    BOX
1   A_PART   2/1/2014    BOX
2   A_PART   1/1/2014    BOX
3   B_PART   1/1/2014    BOX

较大的数据集具有重复项,因此可能看起来像这样(称为DSLarge):

ID  END_DATE PERSON_NAME
1    1/1/2012    MAX
1    1/1/2015    MAX
2    2/1/2012    SALLY
2    5/1/2014    SALLY
3    1/1/2014    JOE

的IDS 1和2实际上是相同的-它们具有相同的名称,它们都应使用相同的ID,而不是我使用DSLarge最新的END_DATE加入数据集的两个不同的ID。 这样可行。 但是现在我想根据更高的数字来组合两个ID。 因此,对于ID 1和2,我希望ID 1的所有记录都为ID 2-我可以在SQL中执行此操作吗?

假设第1 和第2 相同,则可以在此处轻松进行分组。

proc sql;
  create table want as 
    select id, person_name, max(end_date)
    from dsLarge
    group by id, person_name;
quit;

如果他们可以使用不同的人名,而您仍要折叠它们,则希望以某种方式澄清人名问题-例如max(person_name)或类似名称。

顺便说一下,数据步骤将更有效地执行此操作(或至少相同并且可能更有效),但是如果您的需求如此简单,那么SQL方法就可以了。

如果您想让DSSmall中的第1行和第2行的ID为2,因为它们与第3行共享一个NAME ,那么您可以这样做:

proc sql;
    create table want as
    select
        max(ID) as ID,
        NAME,
        COV_DATE,
        PRODUCT
    from DSsmall
    group by NAME;
quit;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM