逐行循环和修改行

时间:2017-03-24 00:59:59

标签: stata

我是Stata语法的新手,无法弄清楚我想做的语法:

假设我的图表如下:

var1 var2 var3
1.3 4.5 3.3 (row 1)
3.3 2.3 3.6 (row 2)
4.5 1.1 2.2 (row 3)

我想运行一个我写的命令但是除了每一行之外的所有值(也就是说,我想用第2 + 3,第1 + 3和第1 + 2行运行我的程序以给出3个不同的输出)。

我想知道如何从for i= 1到#行和for循环中进行for循环:

delete row[i]
run the program, give output
insert row[i]

我似乎无法在网上找到任何合适的内容。

1 个答案:

答案 0 :(得分:1)

如果您要运行的命令与if一起使用,我认为您可以相对轻松地实现此目的。在这里,我计算var1的总和,每次排除第N行:

input var1 var2 var3
1.3 4.5 3.3
3.3 2.3 3.6
4.5 1.1 2.2
end

gen results = .
foreach n of numlist 1/3 {
    * Exclude row n from the calculation
    quietly summ var1 if [_n] != `n'
    local total = r(sum)
    * Store the results in the row that is currently excluded
    replace results = `total' if [_n] == `n'
}