• SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制


    SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制

    1. 各种循环与控制
    DO组     创建一个执行语句块
    DO循环        根据下标变量重复执行DO和END之间的语句
    DO WHILE    重复执行直到条件为假则退出循环
    DO UNTIL    重复执行直到条件为真则退出循环
    DO OVER     对隐含下标数组元素执行DO/END之间的语句
    END         退出DO或SELECT语句的标志
    SELECT      选择执行SAS语句
    IF-THEN/ELSE有条件执行一个SAS语句
    GO TO       使SAS语句跳转到GO TO语句后面,继续执行其他语句
    RETURN      不和LINK语句连用时。跳转到DATA步开头;和LINK语句连用时,跳转到LINK后面的语句。
    CONTINUE    停止DO循环中当前循环,跳转到DO语句继续执行下一次循环,只能用在DO循环。
    LEAVE       跳出当前DO循环或SELECT组,继续执行后面的DATA步。可用在DO循环或SELECT.
    
    2. SELECT - WHEN 顺序执行WHEN,当第一个WHEN为真跳出,或者执行OTHERWISE,否则报错。
    实践:拉直数据集
    
        libname chapt6'f:data_modelook_datachapt6';
        data fishdata4;
            set chapt6.fishlength(keep=location data_name_measurement);
            by location date;
            array tr[1:4] length1-length4;
            retain length1-length4;
            if first.date then do i=1 to 4;
                tr(i)=0;
            end;
            select(_name_);
                when('length1')length1=measurement;
                when('length2')length2=measurement;
                when('length3')length2=measurement;
                when('length4')length2=measurement;
                otherwise;
            end;
            if last.date;
            keep location date length1-length4;
        run;
    3. DO循环
    WHILE|UNTIL
    WHILE语句执行之前被计算,条件真。DO WHILE语句是的当条件为真时重复执行DO组中的这些语句。 
    UNTIL语句执行之后被计算,条件为真。DO UNTIL语句连续执行DO组中的语句块直到UNTIL条件为真时退出循环。
    
    4. DO OVER语句实践:
    求最大值对应的变量
    
        data a;
            input v1 v2 v3 @@;
            datalines;
            1 2 3 1 4 5 2 4
        data b;
            set a;
            _tem=max(of v1-v3);
            array arr v1-v3;
            do over arr;
            if arr=_tem then v4=vname(arr);
            end;
            drop _tem;
        run;
    5. 在DATA步的其他地方,RETURN语句使得SAS系统返回到DATA步开头(常用)。
    6. SAS常用全程语句
    全程语句是可以用在一个SAS程序脚本中的任何地方的语句。可以用在数据步,也可以用在过程步,甚至可以单独使用。
    
    常用的全程语句
    COMMENT     作为其他SAS程序的一种解释或者屏蔽功能
    X           发布主机操作系统命令,如DOS命令
    LIBNAME     定义SAS逻辑库
    FILNAME     标记一个外部文件
    %INCLUDE    从外部文件等调出SAS语句和数据行
    TITLE       输出打印的标题行
    FOOTNOTE    输出打印的脚注行
    OPTIONS     改变SAS默认的系统选项
    
    7. FILENAME语句
    发送程序运行结果到EMAIL
    
        filename outbox email
            to='sendname@company.com'
            type='text/html'
            subject='Test Subject';
        ods html body=outbox/*Mail it!*/;
        title 'Here is tile';
        proc print data=sashelp.class;
        run;
        ods html close;
    程序中,filename定义一个email邮件,包括发送对象、发送文件类型和发送主题。然后通过ods html方式输出数据集class到指定对象的邮箱中去。
    
    抓取某个网页的源代码
    
        filename ws url "http://www.sas.com";
        data sas;
            infile ws length=len lrecl=4000;
            input record $varying4000.len;
        run;
    捕获SAS门户网站源码,并导入到SAS数据集中去,在Web文本挖掘中,常用。
    
    8. 输出控制
    SAS系统的输出时执行SAS程序的结果。主要包括如下三点:
        LOG(日志窗口):主要输出程序运行过程中产生的日志。
        OUTPUT(输出窗口结果):主要是SAS过程步运行产生图表结果。
        GRAPH(图形窗口):主要是SAS过程步运行产生的图行结果。
    实际上SAS系统与外部其他系统进行数据交换,如运行结果输出到Excel、变成SAS数据集等,都需要SAS另外一个重要的输出控制方法ODS(输出文件系统)来控制。
    其中,在输出文件格式中,除了DATA步和PRINTTO过程步主要输出TXT文件外,其余文件格式均由ODS方法产生。
    
    9. ODS输出目标、输出对象如下:
        输出目标(管道)    含义
        LISTING         字符文本在OUTPUT窗口显示、图形在GRAPH1窗口显示
        RESULTS         输出结果在结果窗口显示
        OUTPUT          把OUTPUT窗口的显示内容(输出对象)转换成SAS数据集
        HTML            把OUTPUT窗口的显示内容(输出对象)转换成HTML文件
        CSVALL          把OUTPUT窗口的显示内容(输出对象)转换成含有逗号的标记语言文件
        RTF             把OUTPUT窗口的显示内容(输出对象)转换成RTF文件
        PDF             把OUTPUT窗口的显示内容(输出对象)转换成PDF语言文件
        其他第三方格式 对应的第三方格式文件
    输出对象            含义
    由SAS过程步创建       一个输出对象的属性主要包含对象名称、对象属性、对象标签和对象路径
    
    ODS实践:
    输出过程步中UNIVARIATE所有输出对象--对象名称,对象标签,对象模板,对象路径
        ODS TRACE
    
            ods trace on;
            proc univariate data=sashelp.class;
            class sex;
            var age;
            run;
            ods trace off;
    ODS EXCLUDE:是SECLECT的逆向操作,即在输出目标中排出要输出的对象。
    
  • 相关阅读:
    启用oracle 11g自己主动收集统计信息
    在java中,怎样跳出当前的多重循环?
    从编程的角度理解gradle脚本﹘﹘Android Studio脚本构建和编程[魅族Degao]
    【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
    实现icon和文字垂直居中的两种方法-(vertical-align and line-height)
    android发送get请求时报错
    KeyEvent 键码值
    Android-黑科技-微信抢红包必备软件
    Delicious Apples (hdu 5303 贪心+枚举)
    vim 插件配置博客记录
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467894.html
Copyright © 2020-2023  润新知