• SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理


    SAS学习笔记之《SAS编程与数据挖掘商业案例》(3)变量操作、观测值操作、SAS数据集管理

    1. SAS变量操作的常用语句

    ASSIGNMENT  创建或修改变量
    SUM         累加变量或表达式
    KEEP        规定在数据集中保留的变量
    DROP        规定在数据集中删除的变量
    ARRAY       定义一个数组
    RENAME      重命名数据集变量
    LENGTH      定义变量长度
    LABEL       定义变量标签
    

    2. 连接符:||

    compress:消除空格
    RETAIN应用:一是需要对某一个变量值进行累加、比较等操作。二是需要保留之前的某一满足条件的变量值到指定的观测对应的变量。
    

    3.维度函数:MID() DIM(MULT)等加于DIM(MULT,1)

    LABEL:标签
    

    4. SAS观测值操作

    OUTPUT 输出当前在PDV中的观测,继续无条件自行下面的语句。
    IF      如果满足条件,继续执行后面语句;否则,返回DATA步开头。
    WHERE   观测进入PDV之前进行条件判断。
    REPLACE 更新观测,但仅在MODIFY语句中适用。
    REMOVE  删除观测,但仅在MODIFY语句中适用。
    DELETE  如果满足条件,返回DATA步开头;否则继续执行后面语句。
    STOP    停止输出当前PDV中的观测,并退出DATA步。
    
    WHERE语句在PDV之前执行。
    

    5. 数据集管理主要包括数据集纵向拼接、转置、排序、比较、复制、重命名、删除等操作。通过SAS的过程步完成,常用过程步。

    APPEND  把来自SAS数据集的所以数据添加到另外一个SAS数据集的后面。
    SORT    对原有SAS数据集安装一个或多个变量进行排序。
    TRANSPOSE   对原有的SAS数据集进行行列转置
    CONTENTS    输出SAS逻辑库成员的描述信息
    DATASETS    管理SAS逻辑库成员,可以完成对SAS逻辑库中的所有成员进行输出列表、复制、换名、添加和删除等操作。
    实践:在PROC SORT中用了NODUPKEY后最好一同使用OUT,OUT可以保证原来的数据集不变,把NODUPKEY后的产生的观测输出到新的数据集中。(万一程序开发有误,有保障) 
    带OUT=选项的删除重复BY值
    
            data a;
                input x y @@;
                cards;
                1 20 1 10 1 30 2 40 2 50
                ;
            run;
            proc sort data=a nodupkey out=b;by x;run;

    6. 行列转置实践

    DATA比PROC效率高
    对比:
    6.1 列转置为行
        PROC步:
    
            proc transpose data=chapt6.fishdata
                out=charpt6.fishlength(rename=(coll=measurement));
                var length1-length4;
                by location date;
            run;
        DATA步:
    
            data chapt6.fishlength2;
                set chapt6.fishdata(keep=location data length1-length4);
                array tr[1:4] length1-length4;
                do i=1 to 4;
                measurement=tr(i);
                output;
                end;
                keep location date measurement;
            run;
    6.2 行转置列
        PROC步:
    
            proc transpose data=chapt6.fishlength
                out=chapt6.fishdata2;
                var measurement;
                by location date;
                id _name_;
            run;
        DATA步:
    
        data chapt6.fishlength(keep=location date measurement);
                do i=1 to 4;
                set chapter6.fishlength(keep=location date measurement);
                array tr[1:4] length1-length4;
                tr(i)=measurement;
                end;
                keep location date length1-length4;
            run;
  • 相关阅读:
    使用 console.time() 计算js代码执行时间
    javascript 如何创建只能执行一次的事件。
    Javascript 的addEventListener()及attachEvent()对比
    使用jasmine-node 进行NodeJs单元测试 环境搭建
    Karma和Jasmine 自动化单元测试环境搭建
    3487. 【NOIP2013模拟联考11】剑与魔法(dragons) (Standard IO)
    3470. 【NOIP2013模拟联考8】最短路(path) (Standard IO)
    2018洛谷8月月赛第一题_U28036 Nagisa loves Tomoya
    NOIP2017提高组Day2第一题
    3464. 【NOIP2013模拟联考6】秀姿势(sugata) (Standard IO)
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467898.html
Copyright © 2020-2023  润新知