datamart

1胆绊、取上周日日期和rolling12月的日期:
data timing;
format date1 yymmdd10. date2 yymmdd10.;
date2=intnx('week',today(),0);/上周末亿眠,數(shù)據(jù)截止日/
if mod(year(date2),4)=0 then do;
if (month(date2)100+day(date2))>228 then date1=date2-365;
else date1=date2-364;
end;
else if mod(year(date2)-1,4)=0 then do;
if month(date2)>2 then date1=date2-364;
else date1=date2-365;
end;
else date1=date2-364;/閏年,平年往前R12的date1計(jì)算/
month=year(date2)10000+month(date2)100+day(date2);/數(shù)據(jù)截止日*/
run;

2埂伦、轉(zhuǎn)置:
PROC TRANSPOSE DATA=newcatbycnt out=newcatbycnt1(drop=NAME);
BY CustomerID; /列不變/
ID newcat; /newcat變?yōu)樾?
VAR fag; /fag值/
run;

3、添加最后一筆往前rolling一年的日期oneyearago
data lastandfirst;
set lastandfirst;
format oneyearago yymmdd10.;
if month(lastpurchase) =2 and day(lastpurchase)=29 then do;
oneyearago=mdy(month(lastpurchase),day(lastpurchase)-1,
year(lastpurchase)-1)+1;
end;
else do;
oneyearago=mdy(month(lastpurchase),day(lastpurchase),
year(lastpurchase)-1)+1;
end;
run; /添加最后一筆往前rolling一年的日期oneyearago/

proc sort data=trans;by customer_id;run;
proc sort data=lastandfirst;by customer_id;run;

data trans;
merge trans(in=a) lastandfirst;
by customer_id;
if a;
oneyear=0;
if oneyearago<=purchasetime<=lasttime then oneyear=1;
run;

/************************************************************************/
4、/*********計(jì)算最后一筆往前rolling一年的av am af ipt************/

%macro rfm(input,timevar,output);
proc sql;
create table a1 as
select customer_id,purchasetime,sum(price) as salesbyday,sum(unit) as ui
from &input where &timevar=1 group by 1,2 having sum(price) ne 0;
quit;
proc sort data=a1;by customer_id purchasetime;run;

data &output(keep=customer_id av am af ipt);
set a1;
by customer_id;
if first.customer_id then do;
f=0;
v=0;
u=0;
end;
if salesbyday>0 then q=1;
else q=-1;
f+q;
v+salesbyday;
u+ui;
if last.customer_id then do;
if f=0 and v>0 then f=1;
if f ne 0 then do;
m=v/f;
ipt=u/f;
end;
av=v;
am=m;
af=f;
if f>0 then output;
end;
run;
%mend;

%rfm(trans,oneyear,rfm_1year);
/************************************************************************/

5距糖、導(dǎo)出CSV:
proc export data=result
outfile='D:\Lancome_ec\報(bào)表\sampler.csv' dbms=csv replace;
run;
6娶吞、導(dǎo)入CSV:
%macro importcsv(dataset,path);
proc import datafile=&path out=&dataset;run;
%mend;
%importcsv(dataset=listwave,path="D:\Lancome_ec\報(bào)表\listwave.csv");
7垒迂、導(dǎo)入excel:
PROC IMPORT OUT= WORK.recommend_rule
DATAFILE= "E:\EC\kie\ff-test\recommend_rule.xlsx"
DBMS=EXCEL REPLACE;
SHEET="Sheet1$";
GETNAMES=YES;
RUN;
8、導(dǎo)出excel:
PROC EXPORT DATA=&input
OUTFILE= "E:\EC\kie\ff-test\result&output..xls"
DBMS=EXCEL REPLACE label;
SHEET="sheet1";
RUN;
9妒蛇、/**************************excel多表導(dǎo)出*****************************/
方法1:
%macro report(input,output);
PROC EXPORT DATA=&input
OUTFILE= "E:\EC\kie\ff-test\定期項(xiàng)目\TMALL先試后買\Review\review&EC_date..xlsx"
DBMS=EXCEL REPLACE label;
SHEET="&output.";
RUN;

%mend;

%report(S2p_p2,先試后買推薦結(jié)果);
%report(P2p_p2,正裝推薦結(jié)果);
%report(Productnum,正裝回購(gòu)人數(shù));
%report(Samplenum,先試后買回購(gòu)人數(shù));
%report(p_time,正裝回購(gòu)參考日期);
%report(s_time,先試后買回購(gòu)參考日期);

方法2:
libname xlout excel "E:\EC\kie\ff-test\定期項(xiàng)目\TMALL先試后買\Review\review&EC_date..xlsx";
proc datasets lib=xlout kill;run;
data xlout.先試后買推薦結(jié)果;set S2p_p2;run;
data xlout.正裝推薦結(jié)果;set P2p_p2;run;
data xlout.正裝回購(gòu)人數(shù);set Productnum;run;
data xlout.先試后買回購(gòu)人數(shù);set Samplenum;run;
data xlout.正裝回購(gòu)參考日期;set p_time;run;
data xlout.先試后買回購(gòu)參考日期;set s_time;run;

libname xlout clear;
/***********************************************************************/

10机断、SAS 中可以利用PROC suveryselect 過(guò)程實(shí)現(xiàn)各種抽樣
其一般形式是:
PROC SURVEYSELECT
data=<源數(shù)據(jù)集名>
method = <srs l urs l sys >
out=<抽取樣本存放的數(shù)據(jù)集>
n=<抽取數(shù)量>(or samprate=抽樣比例)
seed =n;
strata <指定分層變量>;
id <指定抽取的樣本所保留的源數(shù)據(jù)集變量>;
run;
說(shuō)明:method用來(lái)指定隨機(jī)抽樣方法的楷拳,其中SRS是指不放回簡(jiǎn)單隨機(jī)抽樣(Simple Random Samping);urs是指放回簡(jiǎn)單隨機(jī)抽樣(Unrestricted Random Sampling)吏奸;sys是指系統(tǒng)抽樣(Systematic Sampling)欢揖。
seed用來(lái)指定隨機(jī)種子數(shù),為非負(fù)整數(shù)苦丁,取0則每次抽取的樣本不同浸颓,若取大于0的整數(shù),則下次抽樣時(shí)若輸入相同值即可得到相同的樣本旺拉;
id是指定從源數(shù)據(jù)集復(fù)制到樣本數(shù)據(jù)集的變量产上,若缺省,則復(fù)制所有變量蛾狗。
例子:
a晋涣、簡(jiǎn)單無(wú)重復(fù)隨機(jī)抽樣舉例:
/按30%的比例從test數(shù)據(jù)集中抽取樣本,并把樣本輸出到results數(shù)據(jù)集中/
proc surveyselect data=test1 out=results1 method=srs samprate=0.3;
run;
b沉桌、分層等比例隨機(jī)抽樣舉例谢鹊;
proc sort data=test2;
by 分層變量;
run; /先用分層變量對(duì)總體樣本進(jìn)行排序/
proc surveyselect data=test2 out=results2 method=srs samprate=0.1;
strata 分層變量;
run; /根據(jù)分層變量等比例從總體中抽取樣本/
c、分層不等比例抽樣舉例留凭;
(1)手工設(shè)置抽樣比例或者抽樣數(shù)
proc sort data=test3;
by 分層變量;
run; /先用分層變量對(duì)總體樣本進(jìn)行排序/
proc surveyselect data=test3 out=results3 method=srs
samprate=(0.1,0.3,0.5,0.2); /根據(jù)分層情況設(shè)置每一層要抽取的比例/
strata 分層變量;
run; /根據(jù)分層變量不等比例從總體中抽取樣本/
proc surveyselect data=test3 out=results3 method=srs
n=(30,20,50,40); /根據(jù)分層情況設(shè)置每一層要抽取的樣本數(shù)/
strata 分層變量;
run;
(2)根據(jù)抽樣表進(jìn)行不等比例抽樣
proc sort data=test3;
by 分層變量;
run; /先用分層變量對(duì)總體樣本進(jìn)行排序/
proc surveyselect data=test3 out=results3 method=SRS
samprate=samp_table; /通過(guò)抽樣比例數(shù)據(jù)集進(jìn)行抽樣佃扼,samp_table數(shù)據(jù)集中要包括分層變量 以及每一分層對(duì)應(yīng)的抽樣比例或者數(shù)量,如果按比例抽樣變量必須用rate來(lái)命名抽樣比例,如果是按數(shù)量抽樣必須用nsize來(lái)命名抽樣數(shù)量/
strata 分層變量;
run;

11蔼夜、輸出由freq出的類別的頻數(shù)和百分比構(gòu)成的表
ods csv file="G:\EC\KIE\online datamart&date\datamart_對(duì)比.csv";
/輸出datamart_對(duì)比表兼耀,總表中control和test包括以下6個(gè)量/
proc freq data=t_test;table cluster;run;
proc freq data=c_control;table cluster;run;
proc freq data=t_test;table auscat;run;
proc freq data=c_control;table auscat;run;
proc freq data=t_test;table Frequency_online;run;
proc freq data=c_control;table Frequency_online;run;
ods csv close;
12.官網(wǎng)datamart字段
最后一筆往前rolling一年時(shí)間段:
Frequency_online 、AnnualSpending_online 求冷、AUS_online 瘤运、ipt_online
數(shù)據(jù)截止日期往前rolling一年時(shí)間段:
Frequency_online_r12 、AnnualSpending_online_r12 匠题、ipt_r12 am=AUS_online_r12

status字段中:
new_r12:首筆購(gòu)買在數(shù)據(jù)截止日到往前rolling一年的時(shí)間內(nèi)拯坟;
newrepeat_r12:首筆購(gòu)買在數(shù)據(jù)截止日到往前rolling一年的時(shí)間內(nèi),并且次數(shù)>1韭山;
Winback_R12:最后一筆購(gòu)買在數(shù)據(jù)截止日到往前rolling一年的時(shí)間內(nèi)郁季,并且最后一筆距離倒數(shù)第二筆超過(guò)365天;
Existing_r12:數(shù)據(jù)截止日期往前rolling一年時(shí)間段內(nèi)有購(gòu)買钱磅、早于數(shù)據(jù)截止日期往前rolling一年有過(guò)購(gòu)買巩踏,并且不是Winback_R12的人;
Winback_YTD:最后一筆在今年購(gòu)買续搀,第一筆在去年之前塞琼,并且去年沒(méi)有購(gòu)買過(guò);
new_ytd:第一筆購(gòu)買在今年禁舷;
Existing_YTD:去年線上購(gòu)買過(guò)彪杉,今年線上又購(gòu)買毅往;
Active:最后一筆距離數(shù)據(jù)截止日的時(shí)間在360天以內(nèi);sleeping:最后一筆距離數(shù)據(jù)截止日的時(shí)間在361天到720天之間派近;
Lost:最后一筆距離數(shù)據(jù)截止日的時(shí)間在721天到1080天之間攀唯;
Lapsed:最后一筆距離數(shù)據(jù)截止日的時(shí)間超過(guò)1081天;

cluster字段:
cluster:最后一筆往前rolling一年的人購(gòu)買產(chǎn)品類別的cluster渴丸;
cluster_all:數(shù)據(jù)截止日往前rolling一年的人購(gòu)買產(chǎn)品類別的cluster侯嘀;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谱轨,隨后出現(xiàn)的幾起案子戒幔,更是在濱河造成了極大的恐慌,老刑警劉巖土童,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诗茎,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡献汗,警方通過(guò)查閱死者的電腦和手機(jī)敢订,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)罢吃,“玉大人楚午,你說(shuō)我怎么就攤上這事∧蛘校” “怎么了矾柜?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)泊业。 經(jīng)常有香客問(wèn)我把沼,道長(zhǎng)啊易,這世上最難降的妖魔是什么吁伺? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮租谈,結(jié)果婚禮上篮奄,老公的妹妹穿的比我還像新娘。我一直安慰自己割去,他們只是感情好窟却,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著呻逆,像睡著了一般夸赫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咖城,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天茬腿,我揣著相機(jī)與錄音呼奢,去河邊找鬼。 笑死切平,一個(gè)胖子當(dāng)著我的面吹牛握础,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悴品,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼禀综,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了苔严?” 一聲冷哼從身側(cè)響起定枷,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邦蜜,沒(méi)想到半個(gè)月后依鸥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悼沈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年贱迟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片絮供。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衣吠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壤靶,到底是詐尸還是另有隱情缚俏,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布贮乳,位于F島的核電站忧换,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏向拆。R本人自食惡果不足惜亚茬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浓恳。 院中可真熱鬧刹缝,春花似錦、人聲如沸颈将。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)晴圾。三九已至颂砸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背人乓。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工梗醇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撒蟀。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓叙谨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親保屯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子手负,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 處理日期的常見(jiàn)情景 NSDate -> String & String -> NSDate 日期比較 日期計(jì)算(基...
    KAKA_move閱讀 814評(píng)論 0 0
  • 日期的處理在大大小小的iOS項(xiàng)目中都十分常見(jiàn),隨著Swift3.0正式版的即將推出,語(yǔ)法的改變讓NSDate以及相...
    魚與愚七閱讀 774評(píng)論 0 0
  • 如何配置一個(gè)多頁(yè)應(yīng)用webpack工程化模板? webpack的四個(gè)核心概念: entry 入口:從哪里開始 ou...
    leyou319閱讀 3,448評(píng)論 0 3
  • 很喜歡九月,即使現(xiàn)在離開了學(xué)校切蟋,再也沒(méi)有”開學(xué)“這個(gè)動(dòng)作统捶。但九月仍然代表了一種躍躍欲試的可能性,代表了一種全新的開...
    伊心同學(xué)閱讀 715評(píng)論 2 15
  • 忽然之間 終于明白 怕的不是你不愛(ài)我 而是我不再愛(ài)你 怕辜負(fù)星光的見(jiàn)證 怕忘記最初的感動(dòng) 怕遺失滿懷愛(ài)的初見(jiàn) 怕失...
    煙之閱讀 181評(píng)論 0 1