【发布时间】:2017-04-20 21:33:32
【问题描述】:
我正在处理很长的商品名称列表 (var1)。如果 var1 包含某些关键字,我想通过创建等于 1 的第二个变量 (var2) 从该列表中提取信息。
我正在使用以下代码:
g soy = strpos(productsproduced, "Soybeans, ") | strpos(productsproduced, "Soybean, ") | strpos(productsproduced, "soybeans, ")| strpos(productsproduced, "soybean, ") | productsproduced == "Soybeans"
鉴于数据未正确编码,并且每个名称以多种不同方式出现(如代码示例中的摘录所示),该列表要长得多。
我相信使用列表会更容易(当然更容易浏览列表,看看我是否遗漏了什么等等)
不幸的是,我已经有一段时间没有使用循环了,但我正在考虑类似的事情:
local mylist Soybean soybean Soybeans soybeans Soybeans, soybeans,
forval i = mylist {
g soy = strpos(var1, "`i'")
}
这不太行,但我不知道如何编码。一个明确的问题是,在这种情况下,Stata 不知道我是否希望它使用 or 运算符(是的,我愿意)还是 and 运算符。
【问题讨论】: