Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: st: Sort rows and give variable name of the observation
From
Nick Cox <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: Sort rows and give variable name of the observation
Date
Thu, 21 Nov 2013 12:35:37 +0000
There is a simpler solution using similar ideas. This two-line
solution can also be reduced to one line. but only rather awkwardly as
far as I can see.
. clear
. input ID x y z
ID x y z
1. 1 1 0 0
2. 2 0 1 0
3. 3 0 0 1
4. 4 0 1 1
5. 5 1 0 1
6. end
.
. egen all = concat(x y z)
. gen which = word("x y z", strpos(all, "1"))
. list
+------------------------------+
| ID x y z all which |
|------------------------------|
1. | 1 1 0 0 100 x |
2. | 2 0 1 0 010 y |
3. | 3 0 0 1 001 z |
4. | 4 0 1 1 011 y |
5. | 5 1 0 1 101 x |
+------------------------------+
Nick
[email protected]
On 21 November 2013 08:32, A Loumiotis <[email protected]> wrote:
> Dear Haluk,
>
> I assume that the last value of W is "z" and not "y" as you reported.
> The code below uses the base function of -egenmore- that is available
> from ssc.
>
> **** Code starts ****
> clear
> input ID x y z
> 1 1 0 0
> 2 0 1 0
> 3 0 0 1
> 4 0 1 1
> 5 1 0 1
> end
> replace y=2 if y==1
> replace z=4 if z==1
> egen isum=rowtotal(x y z)
> egen bsum=base(isum)
> gen rbsum=reverse(bsum)
> gen first=strpos(rbsum,"1")
> gen W="x" if first==1
> replace W="y" if first==2
> replace W="z" if first==3
> replace y=1 if y==2
> replace z=1 if z==4
> list ID x y z W
> **** Code ends ****
>
> Hope this helps,
> Antonis
>
> On Thu, Nov 21, 2013 at 8:19 AM, Haluk Vahaboglu <[email protected]> wrote:
>> I use Stata 12.1 64 for
>> linux.
>> I have a set of variables
>> coded binary as 1/0 and an ID variable:
>> ID x y z
>> 1 1 0 0
>> 2 0 1 0
>> 3 0 0 1
>> I want to search row-wise
>> and find out the first occurrence of -1- to generate a new string
>> variable displaying variable name of that obs.
>>
>> In the end I hope to get a
>> variable like this:
>> ID x y z W
>> 1 1 0 0 x
>> 2 0 1 0 y
>> 3 0 0 1 y
>> This problem could be
>> solved by giving the variable name instead of the value of the obs.
>> to the output of -rowsort- (by Nicholas J. Cox available in ssc)
>> command, may be, but I could not figure out.
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/faqs/resources/statalist-faq/
* http://www.ats.ucla.edu/stat/stata/