I think I follow some of this, although I cannot
reproduce the capricious behaviour you seem
to imply here. I would like to see a copy of
(a subset of) your data that apparently produces
this problem. Strictly, it implies a bug in Stata's
-numlist- command, which does the sorting here.
The help for -rowsort- indicates that missing values
are allowed. If you sort seven values, some of which
are missing, the missing values will not disappear!
(Or did you expect they would?) Following usual Stata
rules they will be sorted to high values.
You are correct that this then will not be what you want.
One way round this is to use -mvencode- to map
missings to some negative number, say -999, presuming
that is not a legitimate number of consumers. These
will always sort lower than any legitimate number.
Then the sum of the first four firms should trap
any -999. However, if any of the first four firms
is missing, and so mapped to -999, then the concentration
ratio should presumably be 100%.
drop s1-s7
mvencode F?mt, mv(-999)
rowsort F?_mt, gen(s1-s7) descend
replace firstfour = 0
forval i = 1/4 {
replace firstfour = s`i' if s`i' >= 0
}
replace firstfour = 100 * firstfour / CONSUM_mt
mvdecode F?mt, mv(-999)
Nick
[email protected]
ALICE DOBSON
> Thanks Nick. It works selectively as I am not getting
> "firstfour" for all
> rows.
> This is probably because the rows have values for one to
> seven firms and not
> for all seven firms
> Further, I checked the data editor and see that in such cases
> where the data
> is avaiable for less than seven firms the command arranges
> the top four
> values s1-s4 (arbitrarily) in columns for say s3-s6
> Hence, I do not get firstfour for all such cases
> >From: n j cox <[email protected]>
> >Reply-To: [email protected]
> >To: [email protected]
> >Subject: Re: st: Generate a new variable [four firm
> concentration ratio]
> >Date: Mon, 21 Nov 2005 21:31:19 +0000
> >
> >If the number of consumers is integer, then
> >just install -rowsort- from SSC.
> >
> >rowsort F?_mt, gen(s1-s7) descend
> >gen firstfour = 100 * (s1 + s2 + s3 + s4) / CONSUM_mt
> >
> >Nick
> >[email protected]
> >
> >ALICE DOBSON
> >
> >I use stata 9.1
> >
> >I have an unbalanced panel data of the type:
> >
> >geographical region (m = 1..1154)
> >year (t = 1..7)
> >
> >with the following variables:
> >
> >total number of consumers in each region (CONSUM_mt)
> >total number of consumers of seven firms in each region
> (F1_mt, F2_mt,
> >F3_mt, F4_mt, F5_mt, F6_mt, F7_mt)
> >
> >
> >I want to calculate the four firm concentration ratio for
> each region,
> >C4_mt, which is the proportion of the number of consumers of
> top four firms
> >to the total number of consumers in that region, in percentage
> >
> >Could anyone be kind enough to help me with this simple calculation?
> >
> >GEOGREGN YEAR CONSUM F1 F2 F3 F4 F5 F6 F7 C4
> >M1 1969
> >M1 1970
> >M1 1971
> >M1 1972
> >M1 1973
> >M1 1974
> >M1 1975
> >M2 1969
> >M2 1970
> >M2 1971
> >M2 1972
> >.
> >.
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/