zoukankan      html  css  js  c++  java
  • SAS笔记(4) FIRST.和LAST.临时变量

    FIRST.和LAST.临时变量是SAS很有特色的一点,我在R和Python中暂时没有发现类似的功能(也许它们也有这个功能,我不知道而已)。考虑这样一种场景:我们有患者就诊的数据,每一条观测对应一个患者的一次就诊记录,我们知道一个患者可能会多次就医,那么如何找到这个患者第一次就医时间以及最有一次就医时间呢?又或者我们如何确定一个患者是不是因为同一个疾病多次入院。这篇博文将详细介绍如何利用FIRST.和LAST.这两个临时变量解决类似问题。

    1.创建FIRST.和LAST.临时变量

    1. 创建FIRST.和LAST.变量的前提是数据必须是排好序的。利用SORT排序,BY var。
    2. 使用SET复制已排好序的数据,用BY语句创建FIRST.和LAST.,BY的对象是第一步排序的变量 var。
    ***创建数据
    DATA ONE;
       INPUT SUBJECT SCORE;
    DATALINES;
    1 11
    2 21
    3 31
    1 12
    4 41
    1 13
    2 22
    4 42
    4 43
    ;
    
    ***1.对数据进行排序
    PROC SORT DATA=ONE;
    BY SUBJECT;
    RUN;
    
    ***2.创建FIRST. 和LAST. 临时变量
    DATA TWO;
       SET ONE;
       BY SUBJECT;
       FIRST = FIRST.SUBJECT;
       LAST = LAST.SUBJECT;
    RUN;
    
    PROC PRINT DATA=TWO;
       TITLE "Demonstrating FIRST. and LAST. Variables";
    RUN;

    first1

    我们发现,对于第3个subject,他的FIRST.和LAST.都为1,说明这个患者只去过一次医院。这里需要注意的是,对于BY语句后面的每一个变量,都会有一个对应的FIRST.和LAST.临时变量,并且这些临时变量不会输出在数据集中。

    2. 使用多个BY 变量

    DATA THREE;
       INFORMAT GENDER GROUP $1.;
       INPUT GENDER GROUP SCORE;
    DATALINES;
    M A 23
    M A 24
    M B 33
    M B 35
    M B 36
    F A 41
    F A 42
    F A 43
    F B 51
    ;
    PROC SORT DATA=THREE;
       BY GENDER GROUP;
    RUN;
    
    DATA FOUR;
       SET THREE;
       BY GENDER GROUP; 
       FIRST_GENDER = FIRST.GENDER;
       LAST_GENDER = LAST.GENDER;
       FIRST_GROUP = FIRST.GROUP;
       LAST_GROUP = LAST.GROUP;
    
    PROC PRINT DATA=FOUR;
       TITLE "Listing of Data Set FOUR";
    RUN;

    3. 应用

    用FIRST.和LAST.计算每个患者的就医次数

    PROC SORT DATA=ONE; 
       BY SUBJECT;
    RUN;
    
    DATA COUNT;
       SET ONE;
       BY SUBJECT;
       
       IF FIRST.SUBJECT THEN NUMBER = 0;
       NUMBER + 1;
    
       IF LAST.SUBJECT THEN OUTPUT;
       KEEP SUBJECT NUMBER;
    RUN;
     
    ***将每个患者的就医次数放入原始数据
    DATA COMBINE;
       MERGE ONE COUNT;
       BY SUBJECT;
    RUN;

    first2

    参考资料:《Longitudinal Data and SAS: A Programmer's Guide》

  • 相关阅读:
    分布式锁原理及实现方式
    【FAQ】Maven 本地仓库明明有jar包,pom文件还是报错解决办法
    【FAQ】tomcat启动jdk版本不一致
    【Map,HashMap,Vector,List】资料汇总
    【FAQ】调用接口序列化问题
    【docker】docker下安装mysql
    linux tcpdump抓包Post请求
    Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败
    Springboot使用Shiro-整合Redis作为缓存 解决定时刷新问题
    CentOS yum 安装nginx
  • 原文地址:https://www.cnblogs.com/zhangzhangwhu/p/7230047.html
Copyright © 2011-2022 走看看