本文介绍了从边或圆弧列表到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

whereisid user的计算结果为真,并且我已将所有用户分组到不相交的集群中。我曾尝试将其视为一个reshape问题,但没有太多成功。据我所知,用户编写的SNA命令似乎都不能实现这一点。

除了我极力避免的循环之外,使用Stata执行此操作的最有效方法是什么?

推荐答案

如果您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)

这篇关于从边或圆弧列表到Stata中的簇的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 08:57