楼主: walkinggirl
4331 4

[原创博文] 【求助】SAS中定义lag变量的问题 [推广有奖]

  • 0关注
  • 0粉丝

大专生

28%

还不是VIP/贵宾

-

威望
0
论坛币
155 个
通用积分
0.0052
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
448 点
帖子
34
精华
0
在线时间
26 小时
注册时间
2007-4-12
最后登录
2015-9-30

楼主
walkinggirl 发表于 2010-2-5 03:16:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教大家问题如下:
如何定义变量b为每组code最近的a的非空滞后变量 。例如:

year       code          a               b
1995         1            90             .
1996         1             .              90  
1997         1             .              90
1998         1           100           90
1999         1           120          100
1995         2            70            .
1996         2             .              70  
1997         2             .              70
1998         2             40           70
1999         2             .              40


十分感谢!!
二维码

扫码加我 拉你入群

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

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

关键词:lag code 滞后变量 定义变量 year 如何

回帖推荐

bobguy 发表于3楼  查看完整内容

The new data logic can be simplied as, data new ; retain b .; set test; by code year; if first.code then b=.; output; if a ne . then b=a; run;

funnyxuke 发表于2楼  查看完整内容

this should work option missing=.; data test; input year code a; datalines; 1995 1 90 1996 1 . 1997 1 . 1998 1 100 1999 1 120 1995 2 70 1996 2 . 1997 2 . 1998 2 40 1999 2 . ; run; proc sort data=test; by code year; run; data new (drop=c); retain b .; set test; by code year; c=lag(a); if c ne . then b=c; if first.code then b=.; run; proc print data=new; run; ...

本帖被以下文库推荐

沙发
funnyxuke 发表于 2010-2-5 05:03:30
this should work

option missing=.;
data test;
input year code a;
datalines;
1995 1 90
1996 1 .
1997 1 .
1998 1 100
1999 1 120
1995 2 70
1996 2 .
1997 2 .
1998 2 40
1999 2 .
;
run;

proc sort data=test;
by code year;
run;

data new (drop=c);
retain b .;
set test;
by code year;
c=lag(a);
if c ne . then b=c;
if first.code then b=.;
run;

proc print data=new;
run;


1# walkinggirl
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
bobguy 发表于 2010-2-5 07:02:59
funnyxuke 发表于 2010-2-5 05:03
this should work

option missing=.;
data test;
input year code a;
datalines;
1995 1 90
1996 1 .
1997 1 .
1998 1 100
1999 1 120
1995 2 70
1996 2 .
1997 2 .
1998 2 40
1999 2 .
;
run;

proc sort data=test;
by code year;
run;

data new (drop=c);
retain b .;
set test;
by code year;
c=lag(a);
if c ne . then b=c;
if first.code then b=.;
run;

proc print data=new;
run;


1# walkinggirl
The new data logic can be simplied as,


data new ;
retain b .;
set test;
by code year;
if first.code then b=.;
output;
if a ne . then b=a;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

板凳
walkinggirl 发表于 2010-2-5 09:21:47
谢谢楼上的两位!十分感谢!

报纸
soporaeternus2 发表于 2010-2-5 11:02:38
3# bobguy
学习了,好强......

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 18:04