全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1438 3
2012-11-09
悬赏 30 个论坛币 未解决
test表中有三列,分别为custid、date、status,具体数据见下表,其中status中,1为销户状态,0为开户状态,要求如下:1. 找出每一个custid的销户日期
2. 如果没有销户,显示最大date的观察信息



custiddatestatus

1

2011/10/9

1

1

2011/10/10

1

1

2011/10/11

1

1

2011/10/12

1

1

2011/10/13

1

1

2011/10/14

1

1

2011/10/15

1

1

2011/10/16

1

1

2011/10/17

1

1

2011/10/18

1

1

2011/10/19

1

1

2011/10/20

1

1

2011/10/21

1

1

2011/10/22

1

2

2011/10/23

0

2

2011/10/24

0

2

2011/10/25

0

2

2011/10/26

0

2

2011/10/27

0

2

2011/10/28

1

2

2011/10/29

1

2

2011/10/30

1

2

2011/10/31

1

2

2011/11/1

1


追加一下奖赏,要求用data step完成,如果是proc sort的话,就免了。

二维码

扫码加我 拉你入群

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

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

全部回复
2012-11-9 13:40:01
数据按客户ID顺序排列还是随机排列的? 这个很关键
二维码

扫码加我 拉你入群

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

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

2012-11-9 18:08:27
按id,statue,date降序排序,注意字段排序的先后顺序。最后output id.first
二维码

扫码加我 拉你入群

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

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

2012-12-1 15:19:52
/*本程序基于数据顺序排列,账户最初缺省值为开户*/
proc import datafile='e:\text.xls' out=text replace;
run;
data text(drop=a b c);
retain a 0 b 1 c;
set text;
if         custid-b and a=0 then do;
if status then output;
status=a;
date=c;
custid=b;
output;        /*没有销户,显示最大date的观察信息*/
end;
if custid=b and status-a=1 then output;        /*输出销户日期*/
a=status;
b=custid;
c=date;
format date yymmdd10.;
run;

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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