Re: [程式] SAS有關交易資料比對

看板Statistics作者 (像風一樣流浪的小孩)時間15年前 (2010/10/24 23:58), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
謝謝你的幫忙 不過一開始我舉的例子有點太簡化 不過你的概念依然可以套用在這裡面 我應該再加幾個欄位如下 分別是金額跟持有時間 有興趣的大大可以再試試 C1 C2 amt txn_start txn_end order A B 200 5/1 5/15 1 D E 300 5/3 5/10 2 B C 100 5/10 5/30 3 E F 301 5/11 6/6 4 B C 100 5/15 6/1 5 B C 203 5/15 6/1 6 B C 202 5/16 6/1 7 D E 298 5/12 5/30 8 C D 301 6/2 6/17 9 我多放了幾個欄位跟多放了order=3跟order=5,6,7 可以發現order=3不能跟order=1串,因為不在時間內,這點到好處理,再下時間判斷即可 但是order=5也不能跟oder=1串,應該是跟order=6串,因為時間在之後,且金額較相似 金額相似的條件,也許可以用+-5%以內就算相似 但你可發現,後面還有個order7,金額更相似 但為何不是order 7,因為即是金額相似,但時間在之後,但一次只認同串一筆 串完order=6之後,order=7當然就不能算進去了 可是用大大的邏輯會把order7也算進去,因為變成一對多的join 所以這裡也得用些方式另外處理 真是不好意思我漏寫了一堆情境跟假設 但這已經給我一些概念來運作了 非常感謝 只是這樣的作法很吃server資源 因為transaction的資料可能會非常多 所以如果有想到更省資源的運算方式 希望各位大大不吝指教 再次感謝幫忙 ※ 引述《tew (咖啡王子)》之銘言: : 標題: Re: [程式] SAS有關交易資料比對 : 時間: Sat Oct 23 12:55:17 2010 : : 題目很有趣 : 雖然你給的資料不完全 : 以客戶來說 應該會有兩三個客戶以上 : 這樣我撰寫 可以一步到位 : 不過 提供我的做法 我假設你的客戶最多交易100次 : 寫了以下的巨集 : 你可以更改多次一點 : 本巨集結果最好是看到log檔出現紅紅綠綠的警告字樣時 : 代表已經處理完成 (就是交易次數100次以內就夠了 ) : : 以下我增列幾筆資料 以驗證我的想法 我想應該符合你的邏輯想法 : data a1; : input c1 $ c2 $; : datalines; : A B : D E : E F : B C : D E : C D : ; : run; : data a1; : set a1; : order=_n_; : /*假設你的交易是有順序性的 : 所以 D--->E 是單獨1筆 : 不會產生 B--C---D---E這樣的路徑 : */ : run; : %macro a; : proc datasets ; : delete final; : quit; : %do i=2 %to 100; : %let x=%eval(&i-1); : %let y=%eval(&i+1); : proc sql; : create table a&i as select *, two.order as order2,two.c&i as c&y : from a&x one, a&x two : where one.c2=two.c1 and : one.order<two.order; : create table b as select * : from a&x : where order not in(select order from a&i) ; : create table c as select c1,c&i as c2,&x as transaction ,order : from b : where order not in(select order2 from a&i) : order by order; : quit; : proc append base=final data=c; : quit; : %end; : proc sort data=final out=final(drop=order);by order; : run; : %mend; : %a; : : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 61.216.240.212 : 推 maumausam:看不懂,我要來好好研究一下,很感謝原PO與tew大的解答 10/24 20:03 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.12.27.185
文章代碼(AID): #1Cn5Uzi_ (Statistics)
文章代碼(AID): #1Cn5Uzi_ (Statistics)