首页 文章

基于现有变量在Stata中计算新变量

提问于
浏览
1

我不太熟悉Stata,我很难找到正确的语法来根据其他几个变量的属性生成一个新变量 .

我有一个表示性别的虚拟变量( Sex_at_birth ),以及3个表示性取向的虚拟变量( isHEisBIisHO ) . 我想创建3个表示性偏好的虚拟变量( likesMENlikesWOMENlikesBOTH ) .

我想使用的示例逻辑语句是:

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

这与其他变量类似 .

我对如何在Stata中编码它感到茫然,而且我相信对于那些了解该程序的人来说,这将是2秒 .

注意:我知道我需要 n-1 个虚拟变量来编码一个包含3个类别的变量,在进行分析时我会考虑到这一点 . 但是对于我的数据集,我希望所有类别都是虚拟编码的(因此我可以选择省略哪一个用于我的分析) .

1 回答

  • 2

    请随时提供您的问题Minimal, Complete, and Verifiable example .

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

    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 |
        +------------------------------------------+
    

相关问题