Stata-有没有办法存储Python的字典或哈希映射等数据?

时间:2013-10-02 13:35:15

标签: stata

有没有办法在Stata中存储信息,类似于Python中的字典或其他语言的哈希映射?

我正在遍历附加了_1,_2,_3,_4,_5,_6,_7 ... _18的变量列表以描绘部分,我想总结字母“DK”出现的次数每个部分中的每个变量。现在我有18个循环,每个循环遍历不同的部分,在一个名为DK_1sum,DK_2sum的新变量中保存DK总数的“总和”,然后我会生成该数据的图形。

我想知道是否有办法将所有这些转换为大型For循环,只需将数据附加到字典/数组,以便数据看起来像:

{s1Sum, 25 
s2Sum, 56 ...
s18Sum, 101}

这可能吗?

2 个答案:

答案 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'"