Re: [程式] SAS有關交易資料比對
題目很有趣
雖然你給的資料不完全
以客戶來說 應該會有兩三個客戶以上
這樣我撰寫 可以一步到位
不過 提供我的做法 我假設你的客戶最多交易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
推
10/24 20:03, , 1F
10/24 20:03, 1F
推
10/25 15:38, , 2F
10/25 15:38, 2F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 2 之 3 篇):