2016-12-05 7 views
2

Мне нужно создать некоторые условные переменные в моем наборе данных.loop in replace command

Я делаю это так:

gen varx=0 

replace varx=1 if resp_127=="A" | resp_128=="A"|resp_129=="A" |/// 
resp_130=="A" | resp_131=="A" | resp_132=="A" ... 

Я хотел бы знать, если есть способ поставить петлю в состоянии, поэтому мне не нужно будет писать resp_127 к resp_ п снова и еще раз. Я просто хочу написать цикл, который автоматически создает условия от resp_127 до resp_140.

+1

Обратите внимание, что у вас есть много переменных ответа одинакового типа, возможно, что 'reshape long' будет хорошей идеей. –

+0

Я тоже согласен с Ником. –

ответ

1

Что-то вроде этого должно делать то, что вы хотите.

generate varx = 0 
forvalues num = 127/140 { 
    replace varx=1 if resp_`num'=="A" 
    } 
+1

В приведенном примере 14 переменных и код Уильяма очень хороши для такого числа, и особенно для большего. Обратите внимание только на несколько переменных: gen varx = inlist («A», resp_127, resp_128, resp_129). –

+0

Я начал с этой техники и понял как раз вовремя, что 'inlist' ограничен 10 символьными переменными. Однако 'inlist' может принимать до 255 числовых переменных, и это хорошо работает, когда имена переменных не так систематичны, как в этом примере. –