楼主: 2010yangxiujuan
2687 4

SAS lag函数应用 组合 [推广有奖]

  • 0关注
  • 0粉丝

大专生

81%

还不是VIP/贵宾

-

威望
0
论坛币
139 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2353 点
帖子
27
精华
0
在线时间
83 小时
注册时间
2010-5-6
最后登录
2025-5-18

楼主
2010yangxiujuan 发表于 2014-8-28 10:54:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位好,求助一个问题,我有数据是这样的:

airline

flight

org

dest

leg

AA

2344

A

B

1

AA

2344

B

C

2

AA

2344

C

D

3

AA

2344

D

E

4

AB

1235

G

H

1

AC

3456

S

F

1

AD

3423

X

Y

1

AD

3423

Y

Z

2


想根据字段leg去连接数据,例如连续的leg就可以连接成新的org和dest,
leg1,2,可以连接成A-C的,生成 AA 2344 A  C  leg这样的记录。

我用了
data test3;
set test;
if leg-lag(leg)=1 then do;
re_org=lag(org);
re_dest=dest;
end;
run;
(test是原始数据)
但是出来的结果是:

airline

flight

org

dest

leg

re_org

re_dest

AA

2344

A

B

1

 

 

AA

2344

B

C

2

 

C

AA

2344

C

D

3

B

D

AA

2344

D

E

4

C

E

AB

1235

G

H

1

 

 

AC

3456

S

F

1

 

 

AD

3423

X

Y

1

 

 

AD

3423

Y

Z

2

D

Z


我想知道问题出在哪?
怎样能实现我想要的结果?多谢


二维码

扫码加我 拉你入群

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

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

关键词:lag airline flight Light test airline flight 记录

沙发
mingfeng07 学生认证  发表于 2014-8-28 11:46:54
  1. data test3(drop=lag);
  2. set test;
  3. lag=lag(org);
  4. if leg-lag(leg)=1 then do;
  5. re_org=lag;
  6. re_dest=dest;
  7. end;
  8. run;
复制代码

藤椅
quekehanmu 发表于 2014-8-28 13:19:47
条件语句+lag的组合极易出错,因为lag储存的值是if语句条件成立时 相关变量的值
所以你第一次执行时
leg-lag(leg)=MISS;
re_org=MISS;
re_dest=MISS;

第二次执行时leg-lag(leg)=1成立;
re_org=lag(org); ===> re_org=MISS;
re_dest=dest; ===> re_dest=C;
org此时读入,所以org=B;

第三次时leg-lag(leg)=1成立;
lag(org)此时就等于第二次读入的org=B;
依次类推

板凳
2010yangxiujuan 发表于 2014-8-28 15:02:44
quekehanmu 发表于 2014-8-28 13:19
条件语句+lag的组合极易出错,因为lag储存的值是if语句条件成立时 相关变量的值
所以你第一次执行时
leg- ...
恩恩,这就是我想要的解释,谢谢你!!

报纸
2010yangxiujuan 发表于 2014-8-28 15:07:19
mingfeng07 发表于 2014-8-28 11:46
明白了,应该先定义一个lag(org),让它成为中间变量,谢谢!

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

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