Я пытаюсь создать фиктивную переменную, которая = 1, если хотя бы две или более (из семи) фиктивных переменных также == 1. Может ли кто-нибудь сказать мне эффективный способ сделать это?как gen variable = 1, если хотя бы две фиктивные переменные == 1 в Stata?
ответ
Давайте предположим, что индикаторные переменные заинтересованные (вы говорите «фиктивные переменные», но это терминология Чрезмерный учитывая его недостатки) являются x1
... x7
. Из этого определения принято, что их значения равны 1 или 0, за исключением того, что значения также могут отсутствовать. Тогда логика резюме вы хотите это
gen xs = (x1 + x2 + x3 + x4 + x5 + x6 + x7) >= 2 if (x1 + x2 + x3 + x4 + x5 + x6 + x7) < .
Это не так уж сложно ввести, данную копию и вставить повторить синтаксис суммы. Квалификатор if
разделяет любые наблюдения, отсутствующие на любом из индикаторов, для которых отсутствующая будет возвращена для новой переменной. Такие наблюдения будут сообщаться как имеющие x1 + x2 + x3 + x4 + x5 + x6 + x7
, которые отсутствуют. Отсутствующие трактуется как угодно большой в Stata, и, конечно же, как больше чем 2, что объясняет, почему проще код
gen xs = (x1 + x2 + x3 + x4 + x5 + x6 + x7) >= 2
бы укусить вас, если missings присутствовали.
Если вам требуется более сложное правило, вы можете найти для egen
функции rowtotal()
, rowmiss()
и т. Д. См. Справку для egen
.
Решением, которое я использовал, было gen variable1 = 0 gen variable1 = 1 if x1 + x2 + x3 == 1 где == 2, если меня интересует переменная, которая имеет 2,> = 3, если больше или = до 3, так далее. Приношу извинения за новичок. – SextonEconomics
Простите, но ваш комментарий мне непонятен. Код не будет запускаться по мере его публикации. Если ответ не тот, который вы хотите, отредактируйте исходный вопрос. –
Вы пробовали что-нибудь в частности? Какие-либо попытки кода вы можете поделиться? –