• SAS-一些有用的语句


    SAS-一些有用的语句

    今天本想继续介绍 summary过程的,但是发现别人整理的比我更好,于是周末再更,好好整理一下描述性统计分析及评分卡建模,今天给大家介绍一些sas有用的语句吧。

    1.如果在同一程序中需要多次调用print语句,用%str可以节省程序书写;

    %let print=%str(proc print data=sashelp.class;run;);

    &print;

    2.查看变量类型;

    data a;

      set sashelp.class;

      w=vtype(age);

    run;

    3.结构查询语言;

     select语句用来检索数据(order从句,format选项) ;

    create语句创建表格;

    update语句增加或修改表格中列的数值(insert和delete语句插入和删除行,用alter语句增加、修改、删去列)

    例子:

    data employee;

      input empname $ empcity $ empyears emptitle $ sales;

      cards;

    aa   beijing    engineer 2300

    bb   shangqiu   teacher  3000

    cc   changsha  32  worker   4000

    dd   changsha  20  salesrep 1000

    ;

    proc sql;

      create table changsha as  

      select empname,

             empcity,

             empyears format=yymmdd8.,

             sales*2 as totalsales,

            

            

             emptitle

      from employee

      where empcity='changsha'

      order by empyears asc; 

      alter table changsha add gender char(1);

      update changsha

         set gender='f'

         where empname in ('aa','cc');

      update changsha

         set gender='m'

         where gender is missing;

      insert into changsha   

         values('ff', 'changsha',10, 8000,'teacher','m');

      delete from changsha   

        where empyears>20;

    quit;

    proc print data=changsha;

    run;

    4.计算行数;

    %let dsid=%sysfunc(open(sashelp.class,i));  

    %let n=%sysfunc(attrn(&dsid,nobs));

    %let rc=%sysfunc(close(&dsid));

    %put obsnum=&n;

     5.scan()用法:

    data a;

      arg='ABC.DEF(X=Y)';

      word=scan(arg,-3);



    run;

    data c;

    arg='ABC.DEF(X=Y)';

    word=scan(arg,-20);

    put word;

    run;

    data d;

    input Arr $ & 22.;

    ArrivalGate=scan(Arr,1,' ');

    DepartureGate = scan(Arr,2,' ');

    put  DepartureGate  ArrivalGate arr;

    cards;

    Arrival DepartureGates

    ;

    run;

    6.sysfunc()用法;

    data a;

    input group $ number point;

    cards;

    A 1 85

    A 2 66

    B 1 69

    C 3 55

    D 4 24

    ;

    run;

    %macro macro_name(group,number,point);

    data out_&group.;

    group="&group";

    number=&number.;

    point=&point.;

    run;

    %mend;

    %macro test;

    *打开存放参数的数据集;

    %let dsid=%sysfunc(open(work.a,i));

    %put &dsid;        *%put是在日志输出改宏变量的值;

    *fetch是为了判断是否读取完数据集记录,若已读完,则返回-1,否则返回0,赋给宏变量rc;

    %let rc=%sysfunc(fetch(&dsid));

            %do %while(&rc=0);

                *trim是去掉字符右边的空格,left是去掉字符左边的空格,getvarc(&dsid,1)是读取数据集的第一列,

                    读取第二列则为getvarc(&dsid,2),getvarc是针对字符,若该列是数值型的则为getvarn(&dsid,2);

                    %let group=%sysfunc(trim(%sysfunc(left(%sysfunc(getvarc(&dsid,1))))));

                    %let number=%sysfunc(trim(%sysfunc(left(%sysfunc(getvarn(&dsid,2))))));

                    %let point=%sysfunc(trim(%sysfunc(left(%sysfunc(getvarn(&dsid,3))))));

                    %put &group;     %put &number;     %put &point;

                    %macro_name(&group,&number,&point);*将参数传给调用你所需要运行的宏macro_name;

                    %let rc=%sysfunc(fetch(&dsid));        *同上fetch;

                    %put &rc;

            %end;
                    %let rc=%sysfunc(close(&dsid));        *关闭数据集;

                    %put &rc;

    %mend;

    %test;

  • 相关阅读:
    sql 生成javabean实体
    git 安装 使用过程遇到的问题
    CentOS7 ab压力测试安装
    Lvs+keepalived+mysql(主从复制)
    liunx下tomcat启动 Cannot find ./catalina.sh
    ftp和ssh登录缓慢的解决办法
    Contos7 FTP 安装步骤
    python生成100以内格式化的数
    Windows中更新python模块的命令
    scrapy的User-Agent中间件、代理IP中间件、cookies设置、多个爬虫自定义settings设置
  • 原文地址:https://www.cnblogs.com/amengduo/p/9587013.html
Copyright © 2020-2023  润新知