网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-05-19 14:36

人气:

作者:admin

标签: First    las    step  SAS  Data 

导读:在SAS的data步中,可以使用by分组,在处理过程中会产生两个临时变量first.variable和last.variable,这两个临时变量的值不会写到结果中...

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;

结果如下:

图片

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信