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 的数组?
这有点笨拙,但是(就我理解的问题而言)它可以满足您的要求:
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
设置为等于.
我需要类似于此 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 的数组?
这有点笨拙,但是(就我理解的问题而言)它可以满足您的要求:
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
设置为等于.