我有一个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最有效的方法是什么?我很想避免使用它?
答案 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)