如何解决Stata foreach命令无法识别多词字符串取值的问题
Stata foreach循环多词字符串元素识别解决方案
报错原因
foreach in语法默认以空格作为元素分隔符,普通双引号无法阻止拆分,同时你原代码里还有两个额外问题:一是判断相等误用了单等号(单等号为赋值操作),二是多词取值直接拼接变量名会生成含空格的非法变量名。
修正后代码
foreach i in `"no college"' `"some college"' `"college degree"' { * 替换空格生成合法变量名 local var_suffix = subinstr(`"`i'"', " ", "_", .) egen medianwealth_`var_suffix' = median(wealth) if education == `"`i'"' }
关键修改说明
- 所有含空格的取值用Stata复合引号
`"内容"'包裹,强制将其识别为单个独立元素,不会按空格拆分 - 用
subinstr()函数将取值中的空格替换为下划线,生成符合Stata命名规则的变量后缀,避免变量名非法报错 - 条件判断使用双等号
==,符合Stata逻辑判断语法规范
内容的提问来源于stack exchange,提问作者Charles
相关产品推荐
相关产品推荐

