如何在Stata中创建字符串值循环?我想要做的一个样本如下所述。我将在列表中有许多其他可能的值。我已经完成并制作了许多手册列表,因此我希望以与此类似的格式执行此操作,您可以在其中查看代码并查看列表。
我在foreach
和forval
上发现了问题,但似乎无法找到与foreach
和字符串变量值直接相关的内容?我错过了一些非常简单的东西吗?
尝试了这个:
foreach x of
"GREEN BLUE" ///
"RED ORANGE" ///
{
replace y = 1 if COLOUR=="`x'" & missing(y)
}
并且:
foreach x of {
"GREEN BLUE" ///
"RED ORANGE" ///
{
replace y = 1 if COLOUR=="`x'" & missing(y)
}
}
答案 0 :(得分:1)
您的主要来源应该是foreach
的帮助和手动输入。要么明确表示有两种不同的语法,从
foreach
index in
list
foreach
index of
keyword list_or_where_to_find_it
您不能使用任何其他语法(您的一个示例将列表放在循环中)并且您不能混合这些语法(因此在没有关键字的情况下使用of
是非法的)。如果Stata的解析器对您梦寐以求的幻想语法非常困惑,那么错误消息可能不会直接提供信息。
所以,这应该有效(当然取决于您的数据集,我们看不到)
foreach x in "GREEN BLUE" "RED ORANGE" {
replace y = 1 if COLOUR == "`x'" & missing(y)
}
本质上,绝对禁止在每个文档的头部的语法图中不允许的任何内容。您的语法必须与其中一个表单匹配。
Meta-tip:在搜索互联网之前阅读Stata文档。
答案 1 :(得分:1)
基于尼克的回答,如果目标的一部分是为了清晰起见将列表中的元素包含在单独的行中,那么将尼克的第一行打破为四个部分就可以了。再次,回应尼克的建议,第一站应该始终是阅读Stata提供的优质材料Task
命令,以及作为PDF提供的完整文档,并通过Stata的help
菜单提供。话虽如此,
help