在Stata中创建邻接矩阵的有效方法?

在Stata中创建邻接矩阵的有效方法?,stata,adjacency-matrix,Stata,Adjacency Matrix,我在Stata中有如下数据: Cat#1 Cat#2 A X B X A Y C Z ... ... 我想创建一个邻接,稍后将其输出到Matlab进行进一步分析 以下是我建议的方法: Cat#1 Cat#2 A X B X A Y C Z ... ... 为Cat#2中的每个唯一元素创建一列(即,在上例中的列:X

我在Stata中有如下数据:

Cat#1    Cat#2
  A        X
  B        X
  A        Y
  C        Z
 ...      ...
我想创建一个邻接,稍后将其输出到Matlab进行进一步分析

以下是我建议的方法:

Cat#1    Cat#2
  A        X
  B        X
  A        Y
  C        Z
 ...      ...
  • 为Cat#2中的每个唯一元素创建一列(即,在上例中的列:X Y Z)
  • 跨CAT#1折叠,以便每个唯一的CAT#1值仅对应一行(即,上例中的行:A B C)
  • 替换X Y Z的每个列元素。。。如果“条目”>0,则按1
  • 删除多余的内容,留下邻接(矩阵)数据集
问题是,我有很多独特的类别用于Cat#2,所以我认为编写这部分代码需要很长时间。对于如何加快创建所需数据结构的过程,是否有任何建议


谢谢

有几个Stata命令用于生成邻接矩阵


尝试在命令提示符下键入
findit netsis
findit nwcommands

建议演示一些编码尝试。第三个要点中的“进入”是什么意思还不清楚。在第一点上,您可以使用命令
levels
获取包含所有唯一值的本地值。然后,通过本地的
foreach
循环可以轻松创建新变量。请尝试重新格式化为宽格式。@AspenChen您可能想要
levelsof
而不是
levels
,这是一个从Stata 9开始就过时的命令(尽管它仍然有效)。@DimitriyV.Masterov谢谢<代码>级别它是。尽管现在正在重新思考这一点,但对每个独特组合的计数进行简单的
折叠
,然后按照@NealFultz的建议将重塑为宽的结构将创建此结构。感谢您的评论。将尝试将数据重塑为宽格式。