楼主: 6203479170
1455 1

关于last.var的问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

97%

还不是VIP/贵宾

-

威望
0
论坛币
90 个
通用积分
0.0600
学术水平
2 点
热心指数
7 点
信用等级
2 点
经验
292 点
帖子
125
精华
0
在线时间
218 小时
注册时间
2009-8-2
最后登录
2022-1-14

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
data a;
input id score;
cards;
1 100
1 200
1 300
2 100
2 200
2 300
;
run;
data b;
input id name $;
cards;
1 nagato
2 sakura
;
data temp;
merge a b;
by id;
if last.id;
run;
请问为什么temp里只有2个观测值,且是datase a里每个ID的最后的值呢?
if last.id;这句代码的作用是什么?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Last VaR Input cards DataS VaR Last

沙发
pobel 在职认证  发表于 2010-9-16 14:25:47 |只看作者 |坛友微信交流群
当DATA步里用BY语句时,就会对每一个BY语句中的变量产生一个 first.var 和一个last.var。

当某一条观测是该BY-变量某个组(值相同)的第一条时,first.var的值是1,否则为0;
当某条观测是该BY-变量某个组的最后一条时,则last.var的值是1,否则为0.

if last.id; 相当于 if last.id=1;  所以只会输出每个组的最后一条。


288  data temp;
289  merge a b;
290  by id;
291  put _all_;
292  if last.id;
293  run;


id=1 score=100 name=nagato FIRST.id=1 LAST.id=0 _ERROR_=0 _N_=1
id=1 score=200 name=nagato FIRST.id=0 LAST.id=0 _ERROR_=0 _N_=2
id=1 score=300 name=nagato FIRST.id=0 LAST.id=1 _ERROR_=0 _N_=3
id=2 score=100 name=sakura FIRST.id=1 LAST.id=0 _ERROR_=0 _N_=4
id=2 score=200 name=sakura FIRST.id=0 LAST.id=0 _ERROR_=0 _N_=5
id=2 score=300 name=sakura FIRST.id=0 LAST.id=1 _ERROR_=0 _N_=6


NOTE: There were 6 observations read from the data set WORK.A.
NOTE: There were 2 observations read from the data set WORK.B.
NOTE: The data set WORK.TEMP has 2 observations and 3 variables.
NOTE: DATA statement used (Total process time):
      real time           0.09 seconds
      cpu time            0.03 seconds
已有 1 人评分学术水平 热心指数 收起 理由
soporaeternus + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

和谐拯救危机

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 21:29