全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2162 3
2010-04-22
目的是rolling求12个月的两次购买以上人的占比,endtime这边要跑12次,太不智能呢,哪位高手能帮忙改改code,用宏表现一下,谢谢


%let Endtime='31jan2009'd;
data sales(KEEP=CUSTOMERID ID);
set sales1;
id=customerid||purchasetime||store;
if  &endtime-365<=purchasetime<=&endtime and customerid ne 'NULL';
run;
PROC SORT DATA=sales; BY ID; RUN;
DATA FREQ (KEEP=CUSTOMERID ID);
   SET sales;
   BY ID;
   IF LAST.ID;
RUN;
DATA FREQ ;
   SET FREQ;
   BY CUSTOMERID;
   IF FIRST.CUSTOMERID THEN DO;
       F=0;
   END;
   F+1;
   IF LAST.CUSTOMERID THEN OUTPUT;
RUN;
proc sql;
create table aa as select count (distinct(case when f>=2 then customerid else '1' end)),count( customerid),count (distinct(case when f>=2 then customerid else '1' end))/count( customerid) from FREQ;
quit;
二维码

扫码加我 拉你入群

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

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

全部回复
2010-4-22 10:58:48
在流水和需要回滚观测的时间点不太大的前提下
SQL应该是一个挺不错的选择,算了目标客户和总量,没有算目标占比 -_-!!!
复制代码
当数据量巨大的话,可以用一个data步来搞定到客户每个时点的次数标记,再进行统计......
二维码

扫码加我 拉你入群

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

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

2010-4-22 11:23:36
你很牛,thanks
二维码

扫码加我 拉你入群

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

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

2010-4-22 12:28:52
2# soporaeternus
哥们
写的不错
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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