2024-05-28 初级SAS学习笔记11(dataset)

        在数据集合并的时候可以使用 IN 选项来标识新生成数据集每条观测来源,IN 选项可以与SET、UPDATE、MERGE语句共用,但最常与MERGE 语句合用,常用格式是IN=VARIABLE,如:

        data  both;

                merge state(in=instate) country(in=incountry)

                by statename;

        run;

值得注意的是,此处的IN=variable里面的variable是临时的,且该variable的值只有0或1,如上程序所示,instate=1表示来自于该条观测存在于名为state的数据集,incountry=0表示该条观测不存在于名为country的数据集,该变量虽然是临时变量但也可以与if else语句连用来筛选合并数据集中需要输出的观测。

举例如下:

proc sort data=customer;

        by customernumber;

proc sort data=orders;

        by customernumber;

run;

data noorders; 

        merge customer orders(in=recent);

        by customernumber;

        if recent=0;

(这里不论是否能通过customernumber变量匹配与否,使用merge语句合并会将两个数据集观测都纳入合并数据集,

而使用recent=0则只会输出在orders数据集中不存在的观测)

run;

proc print data=noorders;

        title "Customers with No Orders in the  Third Quarter";

run;

结果如下:

在data 步还可以使用where =condition选项,其使用规范与where语句相同,示例如下:

        data gone ;

                set animals(where=(status="extinct"));

        proc import datafile="c:\mayrawdata\wildlife.csv"

                out=animals(where=(class="mammalia")) replace;

        proc export data=animals(where=(status="Threatended"))

                outfile="c:\myrawdata\wildlife.xls";

SAS数据集里面默认自带的变量:

        _N_   表示SAS在data step里面循环的次数,该次数不一定的观测数;

        _ERROR_   表示每行观测是否存在错误,存在错误为取值为1,不存在错误取值为0

         FIRSR.VARIABLE 和LAST.VARIABLE  当存在by variable 语句时才可使用,在每个分组内当该变量的取值是第一次出现的观测标记1,其余标记0;或者末次出现标记1,其余标记0;

数据如下:

SAS程序如下:

        data ordered ;

                set walkers;

                places=_N_;

        proc  print data=ordered;

                title “Results of Walk”;

        run;

结果如下:

        proc sort data=ordered;

                by agegroup time;

         data winners;

                set ordered;

                by agegroup time;

                if first.agegroup=1;

        proc print data=winners;

                title "Winners in  Each Age Group";

        run;

结果如下:

                

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值