Nick,
I do not have nvals beforehand. I finally modified your "reshape" program as
I did manually in Eviews and it worked. I just replace the missing values
with some number (I put 99) and run your program and the nvals shows the
right number (of course it includes missing value as a distinct sic). So the
only complication in my case is the missing value needs to be a number.
Thanks again.
Wanli
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Nick Cox
Sent: Sunday, June 19, 2005 5:54 PM
To: [email protected]
Subject: st: RE: RE: unique value count in several variables
Scott's program does not claim to subdivide by your key and year and it does
not do so.
What you call "Nick's original program" appears to be my first code as
modified by you. It was based on the idea that -nvals- did not exist
beforehand, and indeed the purpose of the code is to create -nvals-. In your
case, you appear to have used it after creating -nvals- in some other way.
That won't work. At a minimum, you need to drop -nvals- first.
It is possible also that complications you didn't tell us about have not
been taken into account in modifying the code, as you are here using
variable names not previously explained.
Naturally, people often simplify their problem for Statalist to show the
essence of it. That's great for the people who answer the questions.
However, the original posters then need to add back the complications in
exactly the right way.
Otherwise put, there is nothing in this report that looks to me like a bug
in Scott's code or mine given the original example you specified.
You are right that the second approach will be slower than the first.
There's a lot of looping and testing -if-.
Nick
[email protected]
Wanli Zhao
> I feel I need to report on my running for people interested.
> I have a large
> panel, about 1600 cross-section and 11 years. Scott's program
> generates nvals variable with a single value 1005 ( I do not know what
> it means) for all the gvkey-year. Nick's modification seems to work.
> The problem is the time is unacceptable. I broke the program and the
> values seem correct for finished part.
> Nick's original "reshape" program also gave me an error message as
> follows:
> [reshape error
> (note: j = ssic1 ssic2)
> i (gvkey year sid) indicates the top-level grouping such as subject
> id.
> j (_j) indicates the subgrouping such as time.
> xij variable is K.
> Thus, the following variable(s) should be constant within i:
> nvals
> nvals not constant within i (gvkey year sid) for 28662 values of i:]
>
> I guess the problem is that my ssic1 and ssic2 have many missing
> values.
> Thanks.
>
> Wanli Zhao
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Nick Cox
> Sent: Sunday, June 19, 2005 8:06 AM
> To: [email protected]
> Subject: st: RE: RE: RE: RE: unique value count in several variables
>
> Please remove the "gen" from the last line of the loop.
>
> Nick
> [email protected]
>
> > -----Original Message-----
> > From: [email protected]
> > [mailto:[email protected]]On Behalf Of Nick Cox
> > Sent: 19 June 2005 12:37
> > To: [email protected]
> > Subject: st: RE: RE: RE: unique value count in several variables
> >
> >
> > I too am fond of -levelsof-. For the problem mentioned, this would
> > need to be embedded in a loop over groups, somewhat as follows:
> >
> > gen nvals = .
> > egen group = group(Gvkey year)
> > su group, meanonly
> > qui forval i = 1/`r(max)' {
> > levelsof psic if group == `i', local(p)
> > levelsof ssic if group == `i', local(s)
> > local total: list s | p
> > local total:list uniq total
> > local count:list sizeof total
> > replace gen nvals = `count' if group == `i'
> > }
> >
> > Nick
> > [email protected]
> >
> > > -----Original Message-----
> > > From: [email protected]
> > > [mailto:[email protected]]On Behalf Of Scott
> > > Merryman
> > > Sent: 19 June 2005 12:30
> > > To: [email protected]
> > > Subject: st: RE: RE: unique value count in several variables
> > >
> > >
> > > In addition to Nick's suggestion of using -reshape-, another
> > > possibility is to use -levelsof- and the macro extended functions
> > > (assuming your cross sections are not too large):
> > >
> > >
> > > . l, noobs
> > >
> > > +------------------------------------+
> > > | gvkey psic ssic year subno |
> > > |------------------------------------|
> > > | 1223 4767 4743 1999 1 |
> > > | 1223 4767 4763 1999 2 |
> > > | 1223 4757 4767 1999 3 |
> > > | 1223 4767 4753 1999 4 |
> > > | 1223 4777 4787 1999 5 |
> > > |------------------------------------|
> > > | 1223 4767 4743 1999 6 |
> > > +------------------------------------+
> > >
> > > . levelsof psic, local(p)
> > > 4757 4767 4777
> > >
> > > . levelsof ssic, local(s)
> > > 4743 4753 4763 4767 4787
> > >
> > > . local total: list s | p
> > >
> > > . local total:list uniq total
> > >
> > > . local count:list sizeof total
> > >
> > > . gen nvals = `count'
> > >
> > > . l, noobs
> > >
> > > +--------------------------------------------+
> > > | gvkey psic ssic year subno nvals |
> > > |--------------------------------------------|
> > > | 1223 4767 4743 1999 1 7 |
> > > | 1223 4767 4763 1999 2 7 |
> > > | 1223 4757 4767 1999 3 7 |
> > > | 1223 4767 4753 1999 4 7 |
> > > | 1223 4777 4787 1999 5 7 |
> > > |--------------------------------------------|
> > > | 1223 4767 4743 1999 6 7 |
> > > +--------------------------------------------+
> > >
> > >
> > > Scott
> > >
> > >
> > > > -----Original Message-----
> > > > From: [email protected] [mailto:owner-
> > > > [email protected]] On Behalf Of Wanli Zhao
> > > > Sent: Saturday, June 18, 2005 3:17 PM
> > > > To: [email protected]
> > > > Subject: st: RE: unique value count in several variables
> > > >
> > > > Thanks, Nick. I looked into the suggestions and I think I
> > might have
> > > > confused you on my problem. My panel data is like this:
> > > > Gvkey psic ssic year subno
> > > > 1223 4767 4743 1999 1
> > > > 1223 4767 4763 1999 2
> > > > 1223 4757 4767 1999 3
> > > > 1223 4767 4753 1999 4
> > > > 1223 4777 4787 1999 5
> > > > 1223 4767 4743 1999 6
> > > >
> > > > Using command unique, I can count the distinct values of
> > > psic and ssic by
> > > > gvkey by year. So for psic it's 3 and for ssic it's 5. what
> > > I want is to
> > > > count the distinct values of both psic and ssic by gvkey by
> > > year. In this
> > > > case, it's 7 (4767, 4757, 4777, 4743, 4763, 4753, 4787).
> > > How to generate a
> > > > new variable for my purpose? Hope I'm clear now. Pls help.
> > > >
> > > > Thanks.
> > > > Wanli Zhao
> > > >
> > >
> > >
> > > *
> > > * 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/
> > >
> >
> > *
> > * 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/
> >
>
> *
> * 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/
>
>
> *
> * 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/
>
*
* 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/
*
* 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/