You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Stata中为多个变量同时构建dyads配对数据结构

Stata多变量面板转有向Dyads结构操作方案

你的原始数据是标准的「年份-个体」长面板格式,要生成同年度内所有个体两两配对的有向dyad(即同时保留id1→id2和id2→id1的配对),用Stata自带的joinby命令即可完成,不需要安装第三方外部包,多变量转换只需要修改变量列表,操作步骤如下:


具体操作代码

  1. 预处理原始数据,保存临时副本
* 确认数据按「年份+个体id」唯一识别,排序
isid Year id, sort
* 把原始数据存为临时文件,供后续配对调用
tempfile raw_panel
save `raw_panel'
  1. 重命名变量,完成同年度两两配对
* 把当前内存里的id、分析变量统一重命名为「目的地端」变量
* 注意:如果有多个要转换的变量,全部加到第一个括号里即可
rename (id Freedom) (id_dest Freedom_dest)

* 按年份匹配,生成同一年份所有id的两两组合
joinby Year using `raw_panel'

* 把匹配进来的原始变量重命名为「出发地端」变量
* 变量顺序和上一步rename的原始变量一一对应
rename (id Freedom) (id_origin Freedom_orig)
  1. 清洗整理结果
* 可选:删除id自身和自身配对的观测(一般dyad分析都不需要自配对)
drop if id_origin == id_dest

* 调整变量顺序,按年份、出发地id、目的地id排序
order Year id_origin id_dest Freedom_orig Freedom_dest
sort Year id_origin id_dest

多变量转换说明

如果你需要同时对多个变量构建dyad格式(比如除了Freedom之外还有GDP、Population等变量),只需要修改两处rename命令的变量列表即可,不需要改动其他逻辑。举个例子:

假设原始变量为Year id Freedom GDP Pop,两处rename修改为:

* 第一步重命名目的地端变量
rename (id Freedom GDP Pop) (id_dest Freedom_dest GDP_dest Pop_dest)
* 合并后重命名出发地端变量
rename (id Freedom GDP Pop) (id_origin Freedom_orig GDP_orig Pop_orig)

最后调整order命令里的变量顺序即可。


结果校验

如果你的原始数据是T个年份、N个个体的平衡面板,删除自配对后最终生成的观测总数应为 T * N * (N-1)。以你给出的示例为例:2个id、12个年份(2005-2016),最终会生成24条观测,正好对应每个年份下1→2、2→1两条配对,和你期望的输出格式完全一致。

该方法对id的格式没有要求,无论id是连续数值、非连续数值还是字符串,都可以正常运行。

内容的提问来源于stack exchange,提问作者Giacomo DiPasquale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:06:18