【发布时间】:2021-06-13 08:58:31
【问题描述】:
我在 Stata 中有 3 个变量的数据,一个字符串 id 和数字变量(GPS 数据 - 纬度和经度)。我想通过以下方式(下表)将变量转换为矩阵,以计算所有组合的两个 id-spots 之间的距离。因此,新创建的后续列(例如,id_1)具有原始变量(例如,id)的后续(i+1)值,依此类推。但是,以下命令仅在到达第 n 行以获取值之前有效;然后后续的新行变为空。因此,矩阵的下半部分丢失了(上表:///)。对于 2000 年的观察结果:
foreach num of numlist 1/2000 {
foreach var of varlist id num1 num2 {
gen `var'_`num'=`var'[_n+`num']
}
}
【问题讨论】:
-
您的具体目标是创建 6000 个新变量,每个变量有 2000 个观测值,以便以后计算 (2000 x 1999) / 2 = 1999000 距离。如果后者是目标,请考虑例如
geonear来自 SSC。如果你想要旅行距离,有几个现有的社区贡献的命令,例如search distance。 -
假设您有 2000 个观察值。那么任何对
whatever[2001]或后续观察中的值的引用都是合法的,但只是返回缺失,因为没有这样的观察。 -
谢谢尼克。我在没有意识到你的回复的情况下删除了帖子,因为我自己认为我可以使用“扩展 2”复制整个数据集并运行命令,然后删除不需要的。这样我就可以拥有整个矩阵数据。我需要整个矩阵而不是半对角线。是的,我使用了 geodist,效果很好。再次感谢您的建议!
标签: loops variables matrix stata