我正在尝试使用循环标记一批变量,如下所示,但是因stata错误而失败"语法无效"。我无法找出哪里出了问题。
local myvars "basicenumerator" "basicfr_gpslatitude" "basicfr_gpslongitude"
local mylabels "Name of enumerator" "the latitude of the farmers house" "the longtitude of the farmers house"
local n : word count `mylabels'
forvalues i = 1/`n'{
local a: word `i' of `mylabels'
local b: word `i' of `myvars'
label var `b' "`a'"
}
答案 0 :(得分:0)
要调试这个,主要的技巧是让Stata向你展示它认为本地宏是什么。此脚本使您的代码可以重现并修复它。
clear
set obs 1
gen basicenumerator = 42
gen basicfr_gpslatitude = 42
gen basicfr_gpslongitude = 42
local myvars `" "basicenumerator" "basicfr_gpslatitude" "basicfr_gpslongitude" "'
local mylabels `" "Name of enumerator" "the latitude of the farmers house" "the longtitude of the farmers house" "'
local n : word count `mylabels'
mac li
forvalues i = 1/`n'{
local a: word `i' of `mylabels'
local b: word `i' of `myvars'
label var `b' "`a'"
}
问题在于外部" "
被剥离以定义您的本地,因此为了保持" "
所需,您需要将每个字符串包装在复合双引号内。
有关解释,请参阅http://www.stata.com/manuals14/u12.pdf 12.4.6。
挑剔纠正:拼写是经度。