→ ASD332:PROC SQL 會不會比較快一點? 08/17 23:35
推 MmmRrrrX:把B檔的yrmon刪掉在merge by Indo (?) 08/18 01:09
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.110.97
※ 編輯: wlsherica 來自: 163.25.110.97 (08/18 10:43)
推 imaltar:意思是說B檔的月份一定是3 6 9 12囉 一樣抓當月 08/18 11:34
→ imaltar:不同抓前一季 是這樣嗎 08/18 11:35
→ wlsherica:回i大,沒錯,我還在測試中+_+ 08/18 11:52
→ MmmRrrrX:若照這樣說明,上面應該是可以做到你所要的 08/18 18:35
→ MmmRrrrX:如果AB年月相同 temp=0,抓到的就是相同的那個月 08/18 18:37
→ MmmRrrrX:如果年月不同,抓到的會是B中離A最近的那個月份 08/18 18:38
→ MmmRrrrX:如果indo數不會太多,把倒數第二行drop a temp 刪掉 08/18 18:39
→ MmmRrrrX:比對看看有沒有出錯 08/18 18:40
---------------------
我整理+做點微調提供data step的做法之一
/*原始資料a與b進行sort排序*/
proc sort data=b; by indo; run;
proc sort data=a; by indo; run;
/*a與b檔案利用indo變項合併*/
data e;
merge a b(rename=(yrmon=a));/*其中檔案b的變項yrmon名稱改成a*/
by indo;
temp=yrmon-a;/*兩個變項相減成為變項temp*/
if temp>0;/*如果temp>0時output出來*/
run;
/*對新檔案e作sort排序*/
proc sort data=e; by indo temp; run;
/*取每個indo變項的第一筆資料*/
data c;
set e;
by indo;
if first.indo then output;
run;
完成
ASD大的SQL做法也很棒,謝謝提供意見與參與討論的版友 m(__ __)m
※ 編輯: wlsherica 來自: 163.25.110.97 (08/19 09:07)