微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

foreach 循环的无效语法 (r198)

如何解决foreach 循环的无效语法 (r198)

我正在 Stata 中重新编码我的序数变量,以使值变得更直观,即排名越高,我的变量名称打算测量的程度就越高。

例如,回答“您觉得与您的国家有多亲近?”的问题。编码:1 - 非常接近 2 - 接近 3 - 不太接近 4 - 根本不接近

我想以这种方式重新编码我的新变量“close_country”:4 - 非常接近,3 - 接近,2 - 不太接近,1 - 根本不接近

rename v1 close_city
rename v2 close_province
rename v3 close_country
rename v4 close_continent
rename v5 close_ethnic
gen close_city_1=.
gen close_province_1=.
gen close_country_1=.
gen close_continent_1=.
gen close_ethnic_1=.

local closes "city province country continent ethnic"
foreach `close' in `closes' {
    replace close_`close'_1 = 4 if close_`close'==1
    replace close_`close'_1 = 3 if close_`close'==2
    replace close_`close'_1 = 2 if close_`close'==3
    replace close_`close'_1 = 1 if close_`close'==4
    }
replace close_city_1 = 4 if close_city==1 // this works fine
replace close_city_1 = 3 if close_city==2 // this works fine

解决方法

您的代码似乎减少到

rename (v1-v5) (close_city close_province close_country close_continent close_ethnic) 

local closes "city province country continent ethnic"
foreach v of local closes { 
    gen close_`v'_1 = 5 - close_`v'
}

-- 甚至

foreach v in city province country continent ethnic { 
    gen close_`v'_1 = 5 - close_`v'
}

错误在

foreach `close' in `closes'

你的意思

foreach close in `closes'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。