问题描述
我在 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']
}
}
解决方法
如果有人发现任何用途,我会发布答案。
//duplicate all observation to create all filled matrix
expand 2,gen(dupindex)
forvalue i = 1/1999 {
foreach var of varlist id num1 num2 {
gen `var'`i'=`var'[_n+`i']
}
}
//delete the unnecessary columns & rows
forvalue i = 2000/3999 {
drop id`i' num1`i' num2`i'
}
drop in 2001/3999
drop dupindex