Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: RE: generating variable from combination of three categorical variable


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: RE: generating variable from combination of three categorical variable
Date   Thu, 19 May 2011 07:58:58 +0100

Your rules did not include what should happen in these situations, so
there is little surprise that the code does not work.

Why not start again and give the complete table of outputs for inputs
{0, 1, 2} X {0, 1, 2} X {0, 1, 2}?

Nick

On Thu, May 19, 2011 at 6:01 AM, prakash singh <prakashbhu@gmail.com> wrote:
> Thanks Nick and Maria
>
> I was able to do till this point but got stuck when we have the situation
> see the cell arrangement for better understanding my problem
> var1    var2    var3    var4
> 1       2       1       2 (correct 3)
> 2       2       1       2 (correct 3)
> 1       1       2       2 (correct 3)
> 2       1       2       2 (correct 3)
> 0       2       2       3 (correct 2)
> 2       2       2       3 (correct 2)
>
>
> I have modified the commands also a bit
> gen var4 = max( var1, var2, var3)
> replace var4 = 3 if ( var1+ var2+ var3) >= 3 & var4!=1
> replace var4= max(var1, var2, var3) if var1==var2 & var1~=var3 |
> var1==var3 & var1~=var2
> but this is also not working perfect.
>
> Prakash
>
> On 5/18/11, Nick Cox <njcoxstata@gmail.com> wrote:
>> Good catch.
>>
>> Nick
>>
>> On 18 May 2011, at 14:17, Maria Fleischmann <maria.s.fleischmann@gmail.com
>>  > wrote:
>>
>>> Shouldn't it be:
>>>
>>> gen var4 = max(var1, var2, var3)
>>> replace var4 = 3 if (var1 + var2 + var3) == 3 & var4!=1
>>>
>>> otherwise you subsitute var4=3 if var1, var2, and var3 are all equal
>>> to '1'
>>>
>>>
>>> Maria
>>>
>>> On 18 May 2011 14:37, Nick Cox <n.j.cox@durham.ac.uk> wrote:
>>>>
>>>> You have six rules, which I think can be collapsed to 4 in the
>>>> first instance.
>>>>
>>>> (a) var1==0 & var2==0 & var3==0,
>>>> (b) var4=1 if var1==1 & var2==1 & var3==1
>>>> (c) var4=2 if var1==2 & var2==2 & var3==2
>>>> (d) var4=1 if var1|var2|var3 is having 0 and 1 only
>>>> (e) var4=2 if var1|var2|var3 is having 0 and 2 only
>>>> (f) var4 is 3 if var1|var2|var3 is 0,1 and 2
>>>>
>>>> gen var4 = 0 if max(var1, var2, var3) == 0            (a)
>>>> replace var4 = 1 if max(var1, var2, var3) == 1        (b), (d)
>>>> replace var4 = 2 if max(var1, var2, var3) == 2        (c), (e)
>>>> replace var3 = 3 if (var1 + var1 + var2) == 3         (f)
>>>>
>>>> Now it is evident that you can simplify
>>>>
>>>> gen var4 = max(var1, var2, var3)
>>>> replace var3 = 3 if (var1 + var1 + var2) == 3
>>>>
>>>> Nick
>>>> n.j.cox@durham.ac.uk
>>>>
>>>> prakash singh
>>>>
>>>> In my survey data, I have three categorical variable with 0, 1 and
>>>> 2 as
>>>> three category.
>>>> Now I want to make a variable using combination of these three
>>>> variables.
>>>>
>>>> The combination is such that generated variable var4 == 0 if
>>>> var1==0 & var2==0 & var3==0,
>>>> var4=1 if var1==1 & var2==1 & var3==1,
>>>> var4=2 if var1==2 & var2==2 & var3==2,
>>>> var4=1 if var1|var2|var3 is having 0 and 1 only
>>>> var4=2 if var1|var2|var3 is having 0 and 2 only
>>>> var4 is 3 if var1|var2|var3 is 0,1 and 2
>>>>
>>>> for exmple (see below)
>>>>
>>>> var1 var2 var3 var4
>>>> 0     0     0      0
>>>> 1    1     1       1
>>>> 2    2      2      2
>>>> 0    1     2       3
>>>> 0    1      1      1
>>>> 1    2      0      3
>>>>
>>>> I am using stata10.
>>>>

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index