Вычисление новой переменной в Stata на основе существующих переменных - PullRequest
0 голосов
/ 05 мая 2018

Я не очень разбираюсь в Stata, и я изо всех сил пытаюсь найти правильный синтаксис для генерации новой переменной на основе свойств нескольких других переменных.

У меня есть одна фиктивная переменная, указывающая на пол (Sex_at_birth), и 3 фиктивные переменные, указывающие на сексуальную ориентацию (isHE, isBI, isHO). Я хочу создать 3 фиктивные переменные, указывающие сексуальные предпочтения (likesMEN, likesWOMEN, likesBOTH).

Пример логического утверждения, которое я хотел бы использовать:

likesMEN = 1 if ((Sex_at_birth = 1) & (isHE = 1)) | ((Sex_at_birth = 0) & (isHO = 1)), 
else likesMEN =0

Это было бы аналогично для других переменных.

Я в растерянности от того, как кодировать его в Stata, и я полагаю, что это будет как 2 секунды для того, кто хорошо знает программу.

Примечание: я знаю, что мне нужно n-1 число фиктивных переменных для кодирования переменной, которая имеет 3 категории, и я буду помнить это при проведении анализа. Однако для моего набора данных я хочу, чтобы все категории были закодированы как фиктивные (поэтому я могу выбрать, какую из них пропустить при анализе).

1 Ответ

0 голосов
/ 05 мая 2018

Пожалуйста, всегда предоставьте Минимальный, полный и проверяемый пример с вашим вопросом.

Вам просто нужно использовать == вместо = в своем выражении:

clear
set obs 20

local varlist Sex_at_birth isHE isBI isHO

foreach var of local varlist {
    generate random = runiform()
    generate `var' = 0
    replace `var' = 1 in 1/10
    sort random
    drop random
}

generate likesMEN = ( (Sex_at_birth == 1) & (isHE == 1) ) | ///
                    ( (Sex_at_birth == 0) & (isHO == 1) )

Затем вы получите:

. list

    +------------------------------------------+
    | Sex_at~h   isHE   isBI   isHO   likesMEN |
    |------------------------------------------|
 1. |        0      1      1      0          0 |
 2. |        0      0      0      1          1 |
 3. |        0      1      0      1          1 |
 4. |        1      0      0      1          0 |
 5. |        0      1      1      1          1 |
    |------------------------------------------|
 6. |        1      1      1      1          1 |
 7. |        1      0      1      0          0 |
 8. |        1      0      1      0          0 |
 9. |        1      0      0      1          0 |
10. |        0      1      1      0          0 |
    |------------------------------------------|
11. |        1      0      0      0          0 |
12. |        0      1      1      0          0 |
13. |        0      0      0      1          1 |
14. |        0      1      0      1          1 |
15. |        1      0      0      0          0 |
    |------------------------------------------|
16. |        1      1      0      1          1 |
17. |        1      1      1      0          1 |
18. |        1      1      1      0          1 |
19. |        0      0      0      0          0 |
20. |        0      0      1      1          1 |
    +------------------------------------------+
...