매우 긴 상품명 (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 연산자 (예, 나) 또는 연산자를 사용할지 여부를 알 수 없다는 것입니다.
닉 콕스 종종 도움이됩니다 : 당신의 도움을 주셔서 감사합니다. 이것은 완벽하게 작동하고 많은 시간을 절약 할 것입니다. 태그 할 수없는 것 같지만 문자열의 섹션을 피하기 위해 어떤 지침이 있습니까? 당신이 말했듯이, "gen soy = strpos (var1,"oybean ")> 0은 oybean이 내가 원하지 않는 어떤 것과도 일치하지 않는다고 가정합니다."fancy soybeans "문자열이 나에게 관심이 없다면 어떨까요? "보통의 콩"때문에 "공상적인 콩과 콩"에 관심이있는 문자열입니까? – Nox
한 가지 방법은 문자열에서 '공상 콩'을 제거하면 남은 것을 확인하는 것입니다. 변수를 변경하고'subinstr (var1, "fancy soybeans", "",.)'에 대해 작업하십시오. –