1
我正在處理一個很長的商品名稱列表(var1)。我想通過創建第二個變量(var2)從這個列表中提取信息,如果var1包含某些關鍵字,則該變量等於1。循環搜索帶有本地列表的字符串變量
我用下面的代碼:
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操作符(是的,我會)或者和操作符。
尼克考克斯:謝謝你的幫助。這工作完美,並會節省很多時間。我似乎無法標記,但是如果我想避免部分字符串,是否有任何指示?正如你所說,假設大豆不符合我不想包括的任何東西,那麼它會降低到「gen soy = strpos(var1,」oybean「)> 0。如果字符串」花式大豆「對我不感興趣但是一串說「花式大豆和大豆」有興趣(因爲「正常」大豆)? – Nox
一種方法是查看如果從串中刪除「花式大豆」,剩下的東西是什麼?您不必改變變量,只是在'subinstr(var1,「花式大豆」,「」,。)'上工作。 –