zoukankan      html  css  js  c++  java
  • 【SAS NOTES】两个数据集merge

    根据关键字,将多个数据集的相同关键字的数据合并到同一行。前提:1、数据集需要按照关键字排序、2、多个数据集除了关键字有相同变量名外,其余想合并到一起的变量其变量名不能相同,否则不能合并。

     1 data mysas.mmsuserdec;
     2     infile 'E:\SAS\mysas\mmsuserdec.txt' dlm='09'x firstobs=2;
     3     input date $ city $ a b c d;
     4 run;
     5 data mysas.mmsusernov;
     6     infile 'E:\SAS\mysas\mmsusernov.txt' dlm='09'x firstobs=2;
     7     input date $ city $ a1 b1 c1 d1;
     8 run;
     9 proc sort data=mysas.mmsuserdec;
    10     by city;
    11 run;
    12 proc sort data=mysas.mmsusernov;
    13     by city;
    14 run;
    15 data mysas.mmsuser;
    16     merge mysas.mmsuserdec mysas.mmsusernov;
    17     by city;
    18 run;
    19 proc print data=mysas.mmsuser;
    20 run;

     若需要在某数据集后增加某列汇总一类的统计值,可以与proc means过程步一起实现,其中means过程步输出成一个数据集,然后merge

     1 proc means data=mysas.mmsusernov;
     2     var b1;
     3     by date1;
     4     output out=mysas.mmsusernov_sum sum(b1)=total;
     5 run;
     6 data mysas.mmsueernov_merge_sum;
     7     merge mysas.mmsusernov mysas.mmsusernov_sum;
     8     by date1;
     9     pre=b1/total;
    10 run;
    11 proc print data=mysas.mmsueernov_merge_sum;
    12 run;

     由于merge需要关键字匹配,否则只是记录堆叠。所以如果想往每一行添加一个汇总的变量,merge就不够用了,利用sas 中set 语句的retain默认情况,可以用如下方式实现。

     1 proc means data=mysas.mmsuserdec;
     2     var b;
     3     output out=mysas.mmsuserdec_sum sum(b)=b_sum;
     4 run;
     5 
     6 data mysas.mmsuserdec_sum_merge;
     7     if _n_=1 then set mysas.mmsuserdec_sum;
     8     set mysas.mmsuserdec;
     9 run;
    10 proc print data=mysas.mmsuserdec_sum_merge;
    11 run;

    其中_N_表示行号,当行号为1时,取汇总数据集中唯一的汇总变量,然后retain 下一行由于不符合if 仍然保持该值,所以实现往原数据集中添加汇总列。也可以在data后和set后用同样的数据集名称,实现rewrite。

  • 相关阅读:
    list与map的区别
    [BJOI2019]光线——递推
    [BJOI2019]奥术神杖——AC自动机+DP+分数规划+二分答案
    [BJOI2019]送别——非旋转treap
    [BJOI2019]排兵布阵——分组背包
    [LOJ3014][JOI 2019 Final]独特的城市——树的直径+长链剖分
    BZOJ2300[HAOI2011]防线修建——非旋转treap+凸包(平衡树动态维护凸包)
    BZOJ3033太鼓达人——哈密顿回路/欧拉回路
    BZOJ3236[Ahoi2013]作业——莫队+树状数组/莫队+分块
    BZOJ2339[HNOI2011]卡农——递推+组合数
  • 原文地址:https://www.cnblogs.com/colipso/p/2890365.html
Copyright © 2011-2022 走看看