Хотя вы используете термин «if
оператор», весь ваш код сформулирован в терминах квалификаторов if
, которые не являются командами или операторами. (Вы используете термин «оператор» более свободно, чем обычно, но это не влияет напрямую на ответ.)
Вы не можете вставлять циклы в квалификаторы if
.
См. Различия
help if
help ifcmd
Весь пример
gen y = 0
replace y = 1 if x==1 | x==2 | x==3 | x==4
будет лучше как
gen y = inlist(x, 1, 2, 3, 4)
или (в зависимости от того, что допустимые значения)
gen y = inrange(x, 1, 4)
Решение l oop может быть
gen y = 0
quietly forval i = 1/4 {
replace y = 1 if x == `i'
}
Мы не можем обсуждать, будет ли inlist()
или inrange()
решением или нет для вашей реальной проблемы, если вы не покажете нам.