SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1664|回复: 1
打印 上一主题 下一主题

如何简单的完成rolling搜索

[复制链接]

1

主题

1

帖子

7

积分

新手上路

Rank: 1

积分
7
跳转到指定楼层
楼主
发表于 2016-6-30 10:33:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的数据大概如下:
id year com1 com2 com3
1 2000 B1 B2 B3
1 2001 B1 B3 B4
1 2002 B1 B4 B6
1 2003 B1 B2 B4
1 2004 B2 B1 B3
2 2000 B2 B3 B4
2 2001 B1 B3 B4
2 2002 B2 B3 B4
2 2003 B2 B4 B5
2 2004 B2 B3 B4

我希望实现的是:
1,每一年的com1与前一年的com1比较是否变化;
2,每一年的com1如果变化是否在com1,com2,com3中变化;
3,从第4年开始判断每一id的com1在前三年是否变化,前三年中任一年变化则为变化,变化是否仍在com1,com2,com3中

同理验证com2, com3的变化。

我的办法很笨,如下;
proc sql;
create table test1 as
select a.*, b.com1 as lastYcom1, b.com2 as lastYcom2, b.com3 as lastYcom3
from sample as a left join sample as b
on a.id=b.id and a.year=b.year+1
order by id year;
quit;
data test1; set test1;
if lastYcom1 ne . then do;
  if com1=lastYcom1 then com1ChangeY1=0;
  else com1changeY1=1;
  if com1=lastYcom1 or com1=lastYcom2 or com1=lastYcom3 then com1changein3com_Y1=1;
  else com1changein3com_Y1=0;
end;
run;

如此比较每个过去年的com2, com3

还请大牛们帮忙看看有没有更简洁的方式?

非常感谢!


点评

海!外直播 t.cn/RxmJTRa 禁闻视频 t.cn/RJAQKc4 本来,英国脱欧非常复杂,难言好坏。但是,一看到环球某报批评脱欧,大家就支持英国脱欧了。呵呵!看这个就知道了   发表于 2017-5-1 09:55
分享到:  微信微信
收藏收藏
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 07:50 , Processed in 0.198935 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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