【问题标题】:Match Merging in SAS with given Data set?将SAS中的合并与给定的数据集匹配?
【发布时间】:2016-02-01 23:37:05
【问题描述】:

我有以下 CSV 格式的数据集,并希望生成一个合并的数据集。 数据集 1 是这样的:

Name Age,
Casper 12,
Jasper 13,
Master 14,
Clapper 15

数据集 2 如下:

Name Age1,
Casper 13,
Jasper 14,
Master 15,
Clapper 16

我想合并这两个数据集并像这样创建第三个数据集:

 Name   Age Age1
Casper   12  13
Jasper   13  14
Master   14  15
Clapper  15  16

PS - 这不是任何任务。正在对 SAS 进行定期合并并使用随机查询进行攻击。努力在网络上找到相关的内容。

注意:数据集 1 和 2 只有单个单元格。也就是说,一个单元格由 2 个条目组成,即名称和年龄在单个单元格中。

【问题讨论】:

    标签: csv sas


    【解决方案1】:

    以相同的方式读入文件 - 获取行输入,使用扫描分隔名称和年龄,并在必要时压缩逗号。将名称输入数字。

    data DS1;
    infile cards firstobs=2 truncover;
    length NAME $10. AGE 3.;
    input;
    NAME=scan(_infile_,1,,'s');
    AGE=input(compress(scan(_infile_,2,,'s'),","),8.);
    cards;
    Name Age,
    Casper 12,
    Jasper 13,
    Master 14,
    Clapper 15
    ;
    run;
    
    data DS2;
    infile cards firstobs=2 truncover;
    length NAME $10. AGE 3.;
    input;
    NAME=scan(_infile_,1,,'s');
    AGE=input(compress(scan(_infile_,2,,'s'),","),8.);
    cards;
    Name Age,
    Casper 13,
    Jasper 14,
    Master 15,
    Clapper 16
    ;
    run;
    

    然后您可以从这里对步骤进行排序并进行数据集合并或进行 SQL 连接:

    proc sort data=DS1; by NAME; run;
    proc sort data=DS2; by NAME; run;
    
    data MERGED;
    merge DS1 DS2(rename=(AGE=AGE1));
    by NAME;
    run;
    

    OR SQL:

        proc sql;
        create table MERGED2 as
        select coalesce(t1.NAME,t2.NAME) as NAME
                    , t1.AGE as AGE
                    , t2.AGE as AGE1
        from
            DS1 t1
        full join
            DS2 t2
            on t1.NAME=t2.NAME;
        quit;
    

    【讨论】:

      【解决方案2】:

      您好,在您将数据读入 sas 后试试这个:

      proc sql;
       create table dataset3 as 
       select a.*, b.age1
       from dataset1 as a, dataset2 as b
       where a.name=b.name;
      quit;
      

      我喜欢将我的数据集与 proc sql 合并。创建表正在创建一个新数据集,在 select 语句中,a.* 正在从 dataset1(我将其命名为“a”作为参考)和从 dataset2(作为“b”)中选择所有变量。我正在将它们合并为名称。看看这是否有效。如果不告诉我!

      -迈克

      【讨论】:

        猜你喜欢
        • 2019-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-16
        • 1970-01-01
        • 1970-01-01
        • 2012-05-23
        • 1970-01-01
        相关资源
        最近更新 更多