sas (first、last)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sas (first、last)相关的知识,希望对你有一定的参考价值。

一数据集 data1:
X Y Z
A C 1
B C 2
A B 2
A C 2
B A 1
B C 3
1、只保留不重复的数据(以变量X Y为KEY值,重复的数据去掉。Z变量不用生成。);
2、将重复的数据,全部放入新数据集DATA2;
3、生成如下数据集:
A B 2
A C 3
B A 1
B C 5
4、生成如下数据集:
A C 5
B C 6
如何用first和last 完成

参考技术A data data0;
input x $ y $ z;
datalines;
A C 1
B C 2
A B 2
A C 2
B A 1
B C 3
;
run;
proc sort data=data0 ;
by x y;
run;
data data2;
set data1;
by x y;
if not first.y;
run;

data data1;
set data0;
by x y;
if first.y;
run;
参考技术B 使用Sql抽取吗?追问

用first.var和last.var 分类总和

SAS笔记 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》

以上是关于sas (first、last)的主要内容,如果未能解决你的问题,请参考以下文章

sas first.variable啥意思

first集和last集以firstVT和lastVT的求法

为啥在sql sever中使用first和last函数查询,提示‘first’'last' 不是可以识别的 内置函数名称。

pandas使用groupby函数first函数last函数分别获得每个分组的第一行和最后一行数据(first/last row of each group in dataframe)

pyspark 是不是支持窗口函数(例如 first、last、lag、lead)?

从 Last,First,Middle,Suffix 形式解析名称组件