全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1570 7
2016-04-17

求助想要筛选出连续三年以上有出现的ID2010201120122013或是201020112012201120122013,都有出现的则是要保留的个案,中间有中断的编号6则不符合,

  

ID

  

year

Money

1

2010

200

1

2011

550

1

2012

350

2

2010

200

2

2011

430

2

2012

570

2

2013

550

3

2010

450

3

2013

235

4

2012

550

5

2010

570

5

2011

350

5

2012

220

5

2013

750

6

2010

150

6

2012

350

6

2013

540

7

2010

355

7

2011

465

7

2012

460

8

2013

500

目前想到的方法是先将年份挑出来并且给予编码例如

  

ID

  

N_year

1

1110

2

1111

3

1001

4

0010

5

0111

6

1011

7

1110

8

0001

然后再筛选出N_year中有出现 "111"三个连续1的个案保留,保留1257符合的个案,最后提取出最后表格成为

  

ID

  

year

Money

1

2010

200

1

2011

550

1

2012

350

2

2010

200

2

2011

430

2

2012

570

2

2013

550

5

2010

570

5

2011

350

5

2012

220

5

2013

750

7

2010

355

7

2011

465

7

2012

460

拜托各位大神语法该怎么写? 感谢


二维码

扫码加我 拉你入群

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

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

全部回复
2016-4-18 10:09:41
复制代码
二维码

扫码加我 拉你入群

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

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

2016-4-18 11:03:53
另一种解法
复制代码
二维码

扫码加我 拉你入群

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

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

2016-4-18 11:14:40
建议,先把数据排序,然后新建一个变量y2,把y2赋值为各ID的第一个值,然后下一个obs y2增1。再做比较year vs. y2,相同者赋值1给新变量flag,否则flag为零。再做一个proc univariate,对flag求和,大于等于3者保留。
二维码

扫码加我 拉你入群

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

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

2016-4-18 11:27:40
如果不用 proc univariate,用 .first,.last 也成。

二维码

扫码加我 拉你入群

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

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

2016-4-18 13:10:37
casper2 发表于 2016-4-18 11:14
建议,先把数据排序,然后新建一个变量y2,把y2赋值为各ID的第一个值,然后下一个obs y2增1。再做比较year  ...
tiger,你和我的第一种思路想到一块去了
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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