SAS笔记(4) FIRST.和LAST.临时变量
2024-09-08 05:26:04
FIRST.和LAST.临时变量是SAS很有特色的一点,我在R和Python中暂时没有发现类似的功能(也许它们也有这个功能,我不知道而已)。考虑这样一种场景:我们有患者就诊的数据,每一条观测对应一个患者的一次就诊记录,我们知道一个患者可能会多次就医,那么如何找到这个患者第一次就医时间以及最有一次就医时间呢?又或者我们如何确定一个患者是不是因为同一个疾病多次入院。这篇博文将详细介绍如何利用FIRST.和LAST.这两个临时变量解决类似问题。
1.创建FIRST.和LAST.临时变量
- 创建FIRST.和LAST.变量的前提是数据必须是排好序的。利用SORT排序,BY var。
- 使用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;
我们发现,对于第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;
参考资料:《Longitudinal Data and SAS: A Programmer's Guide》
最新文章
- 一段发工资的shell代码
- 锁ReaderWriterLockSlim介绍
- mathematica练习程序(获得股票数据)
- 如何让代码实现C++
- css使input中的值自动变大写
- 【EF 4】ORM框架及其流行产品之一EF介绍
- ProgressIndicator显示进度条以及一些文字信息
- Cocoa深入学习:NSOperationQueue、NSRunLoop和线程安全
- C#操作xml的3种方式
- Boost库安装(实测vs2012)
- Android基础夯实--你了解Handler有多少?
- 查看已安装tensorflow版本
- 阿里技术专家详解Dubbo实践,演进及未来规划
- Window应急响应(二):蠕虫病毒
- Java技术学习路线笔记:Maven安装和作用
- 登录iOS Dev Center
- 《基于Nginx的中间件架构》学习笔记---1.环境配置
- eigen Matrix详解
- Java动态调用类中方法
- 第8章—使用Spring Web Flow—Spring Web Flow的配置
热门文章
- Spark- Spark普通Shuffle操作的原理剖析
- 尴尬,qt出现错误,然后莫名又好了..
- 关于float与double区别
- Hibernate 原汁原味的四种抓取策略(转)
- Tomcat_异常_03_Tomcat日志(Logger)中文乱码
- 1_Command 游戏开发命令模式
- ACM学习历程—BZOJ 2115 Xor(dfs &;&; 独立回路 &;&; xor高斯消元)
- Parallel Programming-Task Result &;&; Continuation Task
- centos7添加环境变量
- jexus入门