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: RE: Creating a new variable via another variable name based on a condition
From
"Nick Cox" <[email protected]>
To
<[email protected]>
Subject
RE: st: RE: Creating a new variable via another variable name based on a condition
Date
Fri, 9 Jul 2010 17:06:06 +0100
A problem that remains is that Indu specified no rules for cases in
which both time and equity are tied among two or more people.
Such firms could be identified after my code by
by id : gen ties = hours[_N] == hours[_N-1] & equity[_N] == equity[_N-1]
l if ties
Nick
[email protected]
Eric Booth
Nevermind on the last part about Nick's code -- I missed his line
"mvencode *, mv(0) override".
On Jul 8, 2010, at 3:17 PM, Eric Booth wrote:
> I also reshaped to long but approached it a different (and longer way)
than Nick.
>
> ********!
> clear
> inp firms hrs_owner1 hrs_owner2 hrs_owner3 equity_owner1 equity_owner2
equity_owner3
> 1 3 2 0 50 25 25
> 2 2 3 6 25 50 25
> 3 3 8 . 75 25 .
> 4 2 . 2 80 . 20
> end
> **reshape**
> reshape long hrs_owner equity_owner, i(firms) j(ownerid)
> **find max**
> bys firms: egen maxhours = max(hrs_owner)
> **find ties**
> g main_owner = ownerid if maxhours==hrs_owner
> bys firms: egen maxequity = max(equity_owner) if !mi(main_owner)
> **replace main_owner with tied owner with most equity**
> bys firms: replace main_owner = . if maxequity != equity_owner
> bys firms (main_owner): replace main_owner = main_owner[1]
> drop max*
> ********!
>
> but I got a different answer than when I use Nick's solution
(translated into my varnames):
>
> bysort firms (hrs_ equity_) : gen main = ownerid[_N]
>
> If I've translated the varnames correctly, I think Nick's command can
assign main ownership to ids with missing data. There might be a better
way to fix Nick's solution, but one way looks to be to recode the
missings to zero:
>
> ********
> recode hrs_ equity_ (.=0)
> bysort firms (hrs_ equity_) : gen main = ownerid[_N]
> recode hrs_ equity_ (0=.)
> ********
Nick Cox
>> (You should -update- to 8.2. It's free.)
>>
>> You should -reshape- your data to -long-. Then no loops are required.
>>
>> You don't give variable names. I will assume
>>
>> Firm identifier: id
>> Hours worked by owners 1, 2, etc.: hours1, etc.
>> Equity owned by owners 1, 2, etc.: equity1, etc.
>>
>> The -reshape- is
>>
>> reshape long hours equity, i(id)
>>
>> Then
>>
>> rename _j owner
>> mvencode *, mv(0) override
>> bysort id (hours equity) : gen main = owner[_N]
>>
>> Repeat: no loops.
Indu Khurana
>> Creating a new variable via another variable name based on a
condition
>>
>> Using stata 8.0. I am trying to create a logical condition which
would
>> copy the name of the variable if satisfied.
>>
>> Here is what I have:
>>
>> Aim is to identify the main owner. I have generated one variable Main
>> Owner
>> I assign value to this variable using maximum no. of hours worked.
>>
>> I have information on
>> 1. Total 10 owners. Sometimes there may be only 1 or 2 owners.
>> 2. Hours - Number of hours worked per week.
>> 3. Equity - Equity ownership by each worker.
>> I have data for 5 years. There are approximately 5000 firms.
>>
>> There are 2 issues:
>> 1. Lets say there are 2 owners (1 and 2) . Owner1 works for 3 hours
>> and Owner2 works for 2 hours, then I want the variable main owner to
>> take the value 1. How can I post the name of the variable and not the
>> value?
>> 2. Now if the hours worked for the owners are the same I use Equity
>> ownership as the variable to resolve the tie. In that case owner with
>> maximum equity ownership becomes the main owner. How to create a loop
>> for this?
>>
>> 1st year data
>>
>>
>> Firms Hrs owner1 Hrs owner2 Hrs owner3 main owner
>> 1 3 2 0 1
>> 2 2 3 6 3
>> 3 3 8 . 2
>> 4 2 . 2 tie - go to
>> equity
>> .
>> .
>> .
>> 5000
>>
>> Firms Equity ownr1 Equity ownr2 Equity owner3 main ownr
>> 1 50 25 25
1
>> 2 25 50 25
3
>> 3 75 25 .
2
>> 4 80 . 20
1
>> .
>> .
>> .
>> 5000
>>
>>
>> *
*
* 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/