SAS:Data step中first和last变量的应用场景

在sas的data步中,可以使用by分组,在处理过程中会产生两个临时变量first.variable和last.variable,这两个临时变量的值不会写到结果中,这两个临时变量的赋值情况如下:
由于data step是按行处理每一条观测的,当一条观测为某一组的第一条记录时,那么first.variable就为1,否则为0;当一条观测为某一组的最后一条记录时,那么last.variable就为1,否则为0;如果某一组中只有一条观测,那么first.avriable=last.variable都为1.因此,可以使用这两个变量来筛选每一组中的第一条或最后一条观测。以下示例演示如何在sas中使用first & last
考虑这样一种场景:假设有某校一学期内组织篮球比赛的数据,如下所示,每一条观测对应一个team的一次比赛记录,我们知道一个team在一学期内可能会进行多次比赛。
例1:找到每个 team得分最高和最低分别对应的进球数
data test;
input team $ points rebounds; datalines;mavs 29 10
mavs 13 6
mavs 22 5
mavs 20 9
spurs 13 9
spurs 15 10
spurs 33 8
spurs 27 11
rockets 25 8
rockets 14 4
rockets 16 7
rockets 12 4
llc 15 9
;
run;
第一步:先按team和points排序
proc sort data=test out=sort_test;
by team points;run;
第二步:创建临时变量first和last
data test1;
set sort_test;by team points;first=first.team; last=last.team; if first.team or last.team then output;run;
结果如下:
由上图可以看到,first变量为1表示该team得分最低所进的球的数量,last变量为1表示该team得分最高所进的球的数量。我们发现,对于第一个team llc,它的first.和last都为1,说明这个team只进行过一次比赛。这里需要注意的是,对于by语句后面的每一个变量,都会有一个对应的first和last临时变量,并且这些临时变量都不会出现在数据集中。
例2:计算每个 team进行比赛的次数
第一步:先按team排序
proc sort data=test out=sort_test;
by team;run;
第二步:创建临时变量first和last
data test1;
set sort_test; by team; if first.team then number = 0; number + 1; if last.team then output;run;
结果如下:

21家企业5月发布的新品有何看点?
季涨约3~8%,DRAM合约价大幅回升!
横河发布首款便携型无纸记录仪GP系列
TLV3501过零比较器电路设计
工业物联网数据采集工具-物通博联数据采集网关
SAS:Data step中first和last变量的应用场景
基于ARM和Clinux的家庭网关系统
八位堂为任天堂游戏机添加N30无线鼠标新配置
荣耀9怎么样,荣耀9美的有声有色,荣耀9诚意价2299元起
蔚来在纽交所挂牌上市,未来会如何?
北京迎来国际标准新旅程,AWS告别经典时代
科锐推出新款高光效XP-G2 HE,性能更一步提升
倍加福IO-Link双张传感器助力锂电智能化制造
备好知识暖炉,暖冬更暖芯
嵌入式计算机系统将赋能创新医疗技术的应用落地
华为海思式战略:垂直整合之路势在必行
Rivian将在中国推出小型电动汽车
2016 AWE热点:物联网家居安全由”猫”领跑
CSP由细分市场迈进通用照明市场同
三相异步电动机定子绕组是否烧毁的判断方法