Statalist


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

Re: RE: st: Build groups with the same first two numbers of SIC


From   "Martin Weiss" <[email protected]>
To   [email protected]
Subject   Re: RE: st: Build groups with the same first two numbers of SIC
Date   Thu, 19 Mar 2009 19:06:25 +0100

<>

That is why I labelled it an "addition". Hua may still take away from my "orthogonal" comment that a loop can survive execution even if a single command fails...

HTH
Martin
-------- Original-Nachricht --------
> Datum: Thu, 19 Mar 2009 17:58:55 -0000
> Von: "Nick Cox" <[email protected]>
> An: [email protected]
> Betreff: RE: st: Build groups with the same first two numbers of SIC

> But that was not the problem. The -if- condition didn't fail. The -keep-
> was perfectly legal and executed as instructed. If what you suggest were to
> be done, the -capture- would need to be on the next two statements,  the
> -egen- and the -save-. 
> 
> Nick 
> [email protected] 
> 
> Martin Weiss
> 
> Other listers have highlighted easy fixes for your problem. Let me add: A
> failure of an -if- condition, as you describe in your post, need not kill a
> loop if you add -capture- in front of the respective command. If you want
> a record of the suppressed error, add the line
> 
> -di in red _rc-
> 
> afterwards to see whether the return code was non-zero.
> 
> "Hua Pan" <[email protected]>
>  
> > I have a list of firms with four digit sic code, permno (identify Nr.
> for
> > firms), date and return and wish to get daily mean return within the
> group,
> > which has the same first two numbers of SIC code.
> > 
> > My Dataset look like this:
> > 
> > sic     permno      date          ret 
> > …
> > 3674   10012    5.Jan.2004
> >         10012    6.Jan.2004
> >        10012    7.Jan.2004
> > 3674   10259    5.Jan.2004
> >        10259    6.Jan.2004
> >        10259    7.Jan.2004
> > 3674   10299    
> >        10299    
> >        10299  
> > 3674   10302
> >        10302
> >        10302
> > -----------------------------------------------------------------
> > 3714   10667
> >        10667
> >        10667
> > ------------------------------------------------------------------
> > 3728   10145
> >        10145
> >        10145
> > ------------------------------------------------------------------
> > 3861   10163
> >        10163
> >        10163
> > ------------------------------------------------------------------
> > 4213   10379
> >        10379
> >        10379
> > 4213   10649
> >        10649
> >        10649
> > 
> > 
> > At first I want to build several groups. Firms within each group have
> the
> > same character: the first two numbers of their SIC codes are identical.
> For
> > the example above   
> >         sic               permno
> > Group1: 3674              10012, 10259, 10299, 10302
> > Group2: 3714, 3728        10667, 10145
> > Group3: 3861              10163
> > Group4: 4213              10379, 10649
> > 
> > Then I wish to get mean daily return for each group.
> > 
> > So I just tried to separate the big dataset into several sub dataset,
> and
> > calculate daily mean return for each of them. Then I get the sub
> datasets
> > together with “append”. For the first step, I did: 
> > 
> > . local n=3600
> > . while `n' <4300 {
> >   2. use "D:\sic.dta", clear
> >   3. keep if sic >=`n' & sic < `n'+100
> >   4. by date, sort: egen meanret=mean(ret) 
> >   5. save "D:\ph\sic\sic_`n'.dta"
> >   6. local n=`n'+100
> >   7. }
> > 
> > 
> > It is successful for 36xx, 37xx. But when `n’== 3900, all observations
> > in the complete file “D:\sic.dta" are deleted, because none of them
> meet
> > the requirement: sic>=3900 & sic < 4000, so there is an error: 
> > 
> > (y observations deleted)
> > __000001 not found
> > 
> > y is the number of all the observations in complete dataset.
> > 
> > There are a huge number of observations, so I can’t do it one by one.
> > Has anyone here an idea to solve this problem? Or some easier methods to
> > generate such groups (I’ve also tried, but failed to get it ), so I
> can get
> > the daily mean return with:
> > 
> > by group date, sort: egen meanret=mean(ret)
> > 
> > Btw, I’m using stata 10.
> 
> *
> *   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/

-- 
Martin Weiss
Hackersteigle 3
72076 Tübingen
00497071/793535
00491784597218

Aufgepasst: Sind Ihre Daten beim Online-Banking auch optimal geschützt?
Jetzt absichern: https://homebanking.gmx.net/[email protected]
*
*   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–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index