从边缘或弧列表到Stata中的簇

时间:2014-10-30 02:09:28

标签: social-networking stata

我有一个Stata数据集,表示用户之间的连接,如下所示:

src_user linked_user
1         2  
2         3                 
3         5
1         4
6         7            

我想得到这样的东西:

user cluster  
1     1
2     1
3     1
4     1      
5     1
6     2
7     2

其中isid user的计算结果为TRUE,我将所有用户分组为不相交的集群。我曾尝试将此视为reshape问题,但没有取得多大成功。据我所知,用户编写的SNA命令似乎都没有完成。

除了循环之外,使用Stata最有效的方法是什么?我很想避免使用它?

1 个答案:

答案 0 :(得分:2)

如果您reshape数据为长格式,您可以使用group_id(来自SSC)获取您想要的内容。

clear
input user1 user2
1         2  
2         3                 
3         5
1         4
6         7
end

gen id = _n
reshape long user, i(id) j(n)

clonevar cluster = id
list, sepby(cluster)

group_id cluster, match(user)

bysort cluster user (id): keep if _n == 1
list, sepby(cluster)