У меня проблема с созданием цикла в Stata.Stata: присвоить числа в цикле
У меня есть набор данных в Stata, где я классифицировал свои наблюдения на 6 категорий с помощью переменной k10. Таким образом, k10 принимает значения 1,2,3,4,5,6. Теперь я хочу, чтобы назначить каждое наблюдение одно значение в соответствии с его классом:
value 15 for k10=1
value 10 for k10=2
value 8 for k10=3
value 5 for k10=4
value 4 for k10=5
value 2 for k10=6
Это легко, если я создаю новую переменную w10 и сделать это так:
gen w10 =.
replace w10 = 15 if k10==1
replace w10 = 10 if k10==2
replace w10 = 8 if k10==3
replace w10 = 5 if k10==4
replace w10 = 4 if k10==5
replace w10 = 2 if k10==6
Теперь я попытался упростите код, используя цикл, к сожалению, он не делает того, чего я хочу достичь.
Мой цикл:
gen w10=.
local A "1 2 3 4 5 6"
local B "15 10 8 5 4 2"
foreach y of local A {
foreach x of local B {
replace w10 = `x' if k10= `y'
}
}
Цикл присваивает значение 2 для каждого наблюдения, хотя. Причина в том, что if-условие k10 = `y 'всегда истинно и перезаписывает замененные w10s каждый раз до конца, правильно?
Так как я могу написать цикл правильно?
Можете ли вы также показать, как это делается путем перекодирования в одной строке? Благодаря! –
Справка для 'recode' дает соответствующие примеры. –