有没有办法在Stata中存储信息,类似于Python中的字典或其他语言的哈希映射?
我正在遍历附加了_1,_2,_3,_4,_5,_6,_7 ... _18的变量列表以描绘部分,我想总结字母“DK”出现的次数每个部分中的每个变量。现在我有18个循环,每个循环遍历不同的部分,在一个名为DK_1sum,DK_2sum的新变量中保存DK总数的“总和”,然后我会生成该数据的图形。
我想知道是否有办法将所有这些转换为大型For循环,只需将数据附加到字典/数组,以便数据看起来像:
{s1Sum, 25
s2Sum, 56 ...
s18Sum, 101}
这可能吗?
答案 0 :(得分:3)
这可以存储在Stata矩阵,Mata矩阵或普通的Stata变量中。
gen count = .
gen which = _n
qui forval j = 1/18 {
scalar found = 0
foreach v of var *_`j' {
count if strpos(`v', "DK")
scalar found = scalar(found) + r(N)
}
replace count = scalar(found) in `j'
}
list which count in 1/18
对于变体,这里是Stata矩阵方法。
matrix count = J(18,1,.)
qui forval j = 1/18 {
scalar found = 0
foreach v of var *_`j' {
count if strpos(`v', "DK")
scalar found = scalar(found) + r(N)
}
matrix count[`j', 1] = scalar(found)
}
matrix list count
答案 1 :(得分:0)
如果您担心效率,可以考虑Mata的关联数组功能。
* associate Y with X
local yvalue "Y"
mata : H = asarray_create()
mata : asarray(H, "X", st_local("yvalue"))
* available in Mata
mata : asarray(H, "X")
* available in Stata
mata : st_local("xvalue", asarray(H, "X"))
di "`xvalue'"