SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1015|回复: 3
打印 上一主题 下一主题

一个retain和lagged variable问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-6-21 10:38:41 | 只看该作者

一个retain和lagged variable问题

data 如下:
ID AGE A
001 1 0.05
001 2 0.06
001 3 0.10
002 1 0.06
002 2 0.03
002 3 0.07

现在需要一个新变量 B if first.id then b=1-a; else b=lag(b)*(1-a);
即:

ID AGE A B
001 1 0.05 0.95
001 2 0.06 0.95(1-0.06)
001 3 0.10 0.95 (1-0.06)*(1-0.10)
002 1 0.06 0.94
002 1 0.03 0.94*(1-0.03)
002 2 0.07 0.94*(1-0.03)*1-0.07)


我的程序如下:
data test1;
input ID AGE A;
cards;
001 1 0.05
001 2 0.06
001 3 0.10
002 1 0.06
002 2 0.03
002 3 0.07
;
run;
data test2;
set test1;
by id;
retain b;
if first.id then b=1-a;
b=lag(b)(1-a);
if first.id then b=1-a; *otherwise b missing
run;

Could anybody pls tell me what is wrong with my code? It seems no problem for the above sample, but I checked the result for a large sample and b is not decreasing monotonicaly. For example, for the 340th obs of the first id, d is 0.45 and for the 339th obs, d is 0.47.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-6-21 14:15:25 | 只看该作者

sas

你把程序改为;
[code:3d0d6]data test1;
input ID AGE A;
cards;
001 1 0.05
001 2 0.06
001 3 0.10
002 1 0.06
002 2 0.03
002 3 0.07
;
run;
data test2;
length b 8.;
set test1;
retain b;
by id;
if first.id then b=1-a;
else b=b*(1-a);
run; [/code:3d0d6]
retain已经起到了lag的作用
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-6-21 17:50:10 | 只看该作者

询问

data test1;
input ID AGE A;
cards;
001 1 0.05
001 2 0.06
001 3 0.10
002 1 0.06
002 2 0.03
002 3 0.07
;
run;
data test2;
set test1;
by id;
retain b;
[color=red:80920]if first.id then b=(1-a)*(1-a);
else b=.;[/color:80920]run;
proc print;
run;
不知是否是这个意思,满足条件,实际是执行B=()^2;不满足赋缺失值
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2004-6-22 07:44:47 | 只看该作者

Re: Thanks

Thanks a lot to both of you. Now I understand lag is really unnecessary. You help is greatly appreciated.
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-1-10 15:21 , Processed in 0.177330 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表