Stata:使用foreach重命名数字变量

时间:2018-02-11 22:03:33

标签: foreach stata

我有一个大型数据集,其中输入的变量子集具有相同的前缀,后跟下划线和一些细节。它们都是二进制YN,变量都是双精度数。例如,我有变量onsite_healthcliniconsite_CBO,其中值只能是1或0。

我希望rename根据他们正在进行的调查中的问题(所以上述变量将变为q0052_healthclinicq0052_CBO),substr,但如果我使用type mismatch使用下面的代码我(显然)得到foreach var in onsite_healthclinic onsite_CBO { local new = substr(`var', 8, .) rename `new' q0052_`new' }

substr

我的问题是,除了{{1}}之外还有其他命令我可以使用,以便我不必a)首先将所有变量转换为字符串;或b)手动重命名(每个子集约20个,所以虽然可行,但这是浪费时间)。

2 个答案:

答案 0 :(得分:2)

根本不需要循环。虽然基本答案是一行,但我在这里给出了一个完整的,独立的答案。

clear 
set obs 1 
foreach v in onsite_healthclinic onsite_CBO { 
    gen `v' = 1 
}

rename onsite_*  q0052_* 

describe, fullnames 

这个答案暗示你没有研究rename groups下的帮助。

答案 1 :(得分:1)

这会有用吗?

foreach var in onsite_healthclinic onsite_CBO {
    local new = substr("`var'", 8, .)
    rename onsite_`new' q0052_`new'
} 

我在var函数中对本地substr的调用添加了引号,并将onsite_添加到重命名中,这似乎有效。