使用后续值从变量创建矩阵

Create a matrix from variables using subsequent values

我在 Stata 中有 3 个变量的数据,一个字符串 id 和数字变量(GPS 数据 - 纬度和经度)。我想通过以下方式(较低的 table)将变量转换为矩阵,以计算所有组合的两个 id-spot 之间的距离。因此,新创建的后续列(例如,id_1)具有原始变量(例如,id)的后续 (i+1) 值,依此类推。但是,以下命令仅在到达第 n 行以获取值之前有效;然后随后的新行变为空。因此,矩阵的下半部分丢失了(上部 table: ///)。对于 2000 次观察:

foreach num of numlist 1/2000 {
   foreach var of varlist id num1 num2   {
        gen `var'_`num'=`var'[_n+`num']
    }
}

如果有人觉得有用,我会post回答。

//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