Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • generation a new variable using -cond()- function

    Hi,

    I need to generate a variable which is combination of two variables. In our survey the question " Do you want more children?" has been asked from women and saved in the data set based on the pregnancy at the moment. So we ended up with the same question asked from women (Non-preganant and pregnant) in two variables. I need to combine these two variables in one variable regardless of variable of pregnancy. I wanted to use the function -cond()- that Nick Cox thought me here once, but I can't get the appropriate variable.
    I know I can generate the new variable using gen and replace commands, but I wanted to learn to use -cond()- function in the future.

    I appreciate your inputs.

    Code:
    * Example generated by -dataex-. To install: ssc install dataex
    clear
    input long(pregnant more_children more_children_pregnant)
      0   1   .
      0   1   .
      1   .   1
      0   3   .
      0   2   .
      0   1   .
      0   1   .
    -88   1   .
      0   1   .
      0   1   .
      0   2   .
      0   2   .
      0   1   .
      0 -88   .
      1   .   1
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   3   .
      0   2   .
      0   1   .
      0   1   .
      0   1   .
      0 -88   .
      0   1   .
      0   1   .
      0   2   .
      0   2   .
      0   3   .
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   2   .
      0 -88   .
      0   3   .
      0   1   .
      0   1   .
      1   .   1
      0   2   .
      0   2   .
      0 -88   .
      0   1   .
      0   1   .
      1   . -88
      0   1   .
      0 -88   .
      0   1   .
      0   1   .
      0   1   .
      0 -88   .
      0 -88   .
      0 -88   .
      0   1   .
      0   1   .
      0   1   .
    -88   2   .
      1   .   1
      0   1   .
      0   2   .
      1   . -88
      0   2   .
      0   2   .
      0 -88   .
      0   1   .
      0   1   .
      0   2   .
      0   2   .
      0 -88   .
      1   . -88
      0   1   .
      0   3   .
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      1   .   1
      0   1   .
      0   1   .
      0   1   .
      0   1   .
      0   2   .
      0   1   .
      0   1   .
      1   .   1
      0   1   .
      0   1   .
      0 -88   .
      0   2   .
      0   1   .
      0   1   .
      0   1   .
      1   .   2
      0   1   .
    end
    label values pregnant yesno
    label def yesno -88 "-88", modify
    label def yesno 0 "no", modify
    label def yesno 1 "yes", modify
    label values more_children morechildrenlist
    label values more_children_pregnant morechildrenlist
    label def morechildrenlist -88 "-88", modify
    label def morechildrenlist 1 "have_child", modify
    label def morechildrenlist 2 "no_children", modify
    label def morechildrenlist 3 "infertile", modify

  • #2
    -88 looks like some special code that you should map to an extended missing value. Otherwise your new variable could be max(,) or min(,) of the two variables as each function ignores missings when possible. cond(!missing(more_children), more_children, more_children_pregnant) is a way to do it with cond() but max(more_children, more_children_pregnant) is in my view better.

    Comment


    • #3
      While Nick's advice is good, and what I would code myself, since you gave good sample data using dataex, let me demonstrate how to use the cond() function and the pregnant variable to combine the two values into a single variable. Starting by running the code you provided, we continue with
      Code:
      generate more_children_all = cond(pregnant==1,more_children_pregnant,more_children)
      label values more_children_all morechildrenlist
      which gives us
      Code:
      . list, clean
      
             pregnant   more_chil~n   more_chil~t   more_chil~l  
        1.         no    have_child             .    have_child  
        2.         no    have_child             .    have_child  
        3.        yes             .    have_child    have_child  
        4.         no     infertile             .     infertile  
        5.         no   no_children             .   no_children  
        6.         no    have_child             .    have_child  
        7.         no    have_child             .    have_child  
        8.        -88    have_child             .    have_child  
        9.         no    have_child             .    have_child  
       10.         no    have_child             .    have_child  
       11.         no   no_children             .   no_children  
       12.         no   no_children             .   no_children  
       13.         no    have_child             .    have_child  
       14.         no           -88             .           -88  
       15.        yes             .    have_child    have_child  
       16.         no    have_child             .    have_child  
       17.         no    have_child             .    have_child  
       18.         no    have_child             .    have_child  
       19.         no    have_child             .    have_child  
       20.         no    have_child             .    have_child  
       21.         no    have_child             .    have_child  
       22.         no     infertile             .     infertile  
       23.         no   no_children             .   no_children  
       24.         no    have_child             .    have_child  
       25.         no    have_child             .    have_child  
       26.         no    have_child             .    have_child  
       27.         no           -88             .           -88  
       28.         no    have_child             .    have_child  
       29.         no    have_child             .    have_child  
       30.         no   no_children             .   no_children  
       31.         no   no_children             .   no_children  
       32.         no     infertile             .     infertile  
       33.         no    have_child             .    have_child  
       34.         no    have_child             .    have_child  
       35.         no    have_child             .    have_child  
       36.         no    have_child             .    have_child  
       37.         no    have_child             .    have_child  
       38.         no   no_children             .   no_children  
       39.         no           -88             .           -88  
       40.         no     infertile             .     infertile  
       41.         no    have_child             .    have_child  
       42.         no    have_child             .    have_child  
       43.        yes             .    have_child    have_child  
       44.         no   no_children             .   no_children  
       45.         no   no_children             .   no_children  
       46.         no           -88             .           -88  
       47.         no    have_child             .    have_child  
       48.         no    have_child             .    have_child  
       49.        yes             .           -88           -88  
       50.         no    have_child             .    have_child  
       51.         no           -88             .           -88  
       52.         no    have_child             .    have_child  
       53.         no    have_child             .    have_child  
       54.         no    have_child             .    have_child  
       55.         no           -88             .           -88  
       56.         no           -88             .           -88  
       57.         no           -88             .           -88  
       58.         no    have_child             .    have_child  
       59.         no    have_child             .    have_child  
       60.         no    have_child             .    have_child  
       61.        -88   no_children             .   no_children  
       62.        yes             .    have_child    have_child  
       63.         no    have_child             .    have_child  
       64.         no   no_children             .   no_children  
       65.        yes             .           -88           -88  
       66.         no   no_children             .   no_children  
       67.         no   no_children             .   no_children  
       68.         no           -88             .           -88  
       69.         no    have_child             .    have_child  
       70.         no    have_child             .    have_child  
       71.         no   no_children             .   no_children  
       72.         no   no_children             .   no_children  
       73.         no           -88             .           -88  
       74.        yes             .           -88           -88  
       75.         no    have_child             .    have_child  
       76.         no     infertile             .     infertile  
       77.         no    have_child             .    have_child  
       78.         no    have_child             .    have_child  
       79.         no    have_child             .    have_child  
       80.         no    have_child             .    have_child  
       81.         no    have_child             .    have_child  
       82.         no    have_child             .    have_child  
       83.        yes             .    have_child    have_child  
       84.         no    have_child             .    have_child  
       85.         no    have_child             .    have_child  
       86.         no    have_child             .    have_child  
       87.         no    have_child             .    have_child  
       88.         no   no_children             .   no_children  
       89.         no    have_child             .    have_child  
       90.         no    have_child             .    have_child  
       91.        yes             .    have_child    have_child  
       92.         no    have_child             .    have_child  
       93.         no    have_child             .    have_child  
       94.         no           -88             .           -88  
       95.         no   no_children             .   no_children  
       96.         no    have_child             .    have_child  
       97.         no    have_child             .    have_child  
       98.         no    have_child             .    have_child  
       99.        yes             .   no_children   no_children  
      100.         no    have_child             .    have_child
      Last edited by William Lisowski; 21 Jun 2017, 18:02.

      Comment


      • #4
        Thank you both. I appreciate your help.
        Last edited by Saleh Babazadeh; 22 Jun 2017, 09:32.

        Comment

        Working...
        X