Stata 中的数组引用?

Array reference in Stata?

我需要类似于此 SAS 代码的 Stata 代码:

i=1; 
do while (i <= 6);
    A=B(C(i));
    i=i+1;
end;

B 和 C 都是数组

B_1, B_2, B_3, B_4, B_5 and B_6
C_1, C_2, C_3, C_4, C_5 and C_6

例如,如果i = 1,则C(i) = C_1

对于第 3 行,如果 C_1 = 5,那么我想将 A 设置为 B_5

我的问题是访问数组条目 B(C(i))。如何在 Stata 中编写此访问权限?

没有一对一的等价物。参见

常见问题解答。 . . . . . . . . . . . . . . .在 Stata 中实现类似 SAS 的数组 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . W. 古尔德 2/03 如何在 Stata 中实现类似 SAS 的数组?

Here is a link.

这有点笨拙,但是(就我理解的问题而言)它可以满足您的要求:

clear all
forvalues i = 1/6 {
    scalar c_`i' = 7-`i'
}
forvalues i = 1/6 {
    scalar b_`i' = ceil(100/`i')
}

// test method
forvalues i = 1/6 {
    scalar a = b_`=c_`i''
    di a
}
scalar list

请注意,在你写的问题中,a每次都会被覆盖,所以大概在“a = b(c(i))”之后有命令。 Stata 语法 '=...'(带有适当的左单引号)计算标量 c_'i' 并将结果值插入 b_? 的名称中,然后将 a 设置为等于.