全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2625 4
2014-08-28
各位好,求助一个问题,我有数据是这样的:

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


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


二维码

扫码加我 拉你入群

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

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

全部回复
2014-8-28 11:46:54
复制代码
二维码

扫码加我 拉你入群

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

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

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;
依次类推
二维码

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

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

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群