我有一個in01
包含關系的橋接表。例如,客戶 A 與客戶 B 相關(然后將其存盤在兩個重復的記錄 A/B 和 B/A 中)。
/* 1. Testdata */
data in01(keep=primary: secondary:);
infile datalines;
length primary_party_no secondary_party_no $ 15;
input primary_party_no secondary_party_no ;
datalines;
A B
B A
A C
C A
B D
D B
W Z
Z W
Y Z
Z Y
X Y
Y X
;
run;
任務:我的任務是將所有具有連接的客戶分組并創建一個 ID,無論連接客戶所需的“鏈接”數量如何。
在上面的示例Group 1
中將由 組成A, B, C, D
,而Group 2
將由 組成W, X, Y, Z
。
我認為資料必須遞回回圈 - 但是,我無法弄清楚如何設計在每個回圈中呼叫自身的資料步驟或宏。
解決這個問題的一個好的起點是什么?
uj5u.com熱心網友回復:
看起來您正在嘗試從您的連接構建的網路中計算連接的子圖。請參閱上一個問題。 識別客戶群/網路
在您的情況下,節點 ID 變數是字符而不是數字。其他問題中提到的宏已更新為處理字符節點 ID https://github.com/sasutils/macros/blob/master/subnet.sas
聽起來您的連接不是單向的,因此請禁用定向選項。
filename src url 'https://raw.githubusercontent.com/sasutils/macros/master/subnet.sas';
%include src;
%subnet
(in=in01
,out=want
,from=primary_party_no
,to=secondary_party_no
,directed=0
);
proc print data=want;
run;
結果:
primary_ secondary_
Obs party_no party_no subnet
1 A B 1
2 A C 1
3 B A 1
4 B D 1
5 C A 1
6 D B 1
7 W Z 2
8 X Y 2
9 Y X 2
10 Y Z 2
11 Z W 2
12 Z Y 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487133.html