2013-10-23 56 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