2013-10-23 71 views
1

我有以下的數據集,告訴我,如果有兩個人之間的連接網絡分析:簡單與塔塔

pos_1 pos_2 
    2  4 
    2  5 
    1  2 
    3  9 
    4  2 
    9  3 

以上讀作PERSON_2連接到person_4,...,person_4連接到PERSON_2,並person_9連接到PERSON_3

而且我要創建第三個二分變量recip,讓我知道,如果連接往復運動,換句話說,如果person_X連接到person_Y被person_Y連接到person_X離開我:

pos_1 pos_2 recip 
    2  4  1 
    2  5  0 
    1  2  0 
    3  9  1 
    4  2  1 
    9  3  1 

回答

3

2,4和4,2可以看作是互惠的,因爲兩者都是2,4。 min()max()就足以做到這一點。使用空格或其他標點符號來消除歧義,例如1,23和12,3。

gen pair = string(min(pos_1, pos_2)) + " " + string(max(pos_1, pos_2)) 
bysort pair : gen recip = _N == 2 

見考克斯,新澤西州2008年 分裂身份如何組二人組合的問題,或。 塔塔雜誌 8:588-591, 這是http://www.stata-journal.com/sjpdf.html?articlenum=dm0043

這也提供了數據校驗訪問,爲每對應該出現一次或兩次,但沒有更多:

by pair: assert _N == 1 | _N == 2 

duplicates report pair