0

我不太精通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 个类别的变量,并且在进行分析时我会牢记这一点。但是,对于我的数据集,我希望对所有类别进行虚拟编码(因此我可以选择在分析中省略哪一个)。

4

1 回答 1

2

请始终为您的问题提供一个最小、完整和可验证的示例

您只需要在表达式中使用==而不是:=

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 |
    +------------------------------------------+
于 2018-05-05T13:00:53.873 回答