Bookmark and Share

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: computation across rows


From   Hewan Belay <hewan_belay@yahoo.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: computation across rows
Date   Fri, 11 Feb 2011 14:54:59 -0800 (PST)

Dear Nick,
I am a bit confused: Your suggested commands presume that there is a variable in the dataset called     obs    don't they? I nevertheless tried it out, and indeed my presumption was right, as I get the error message

. su obs if id==82, meanonly
variable obs not found
r(111);

Unless I am fully misunderstanding your suggestion? As to the other parts of your response: Yes, I certainly don't want to undertake these operations manually using the editor, as I may need to later revise the operations when I get more information about the data. 

(To give a bit of an idea, my observations in my panel data are districts, and some of the districts have split as of a certain year, and I seek to aggregate back the characteristics for these split districts--so in the toy example, think of district #82 as having split into two (#85 and 89) in one of my panel years.)

In light of above mentioned error, please let me know if I misunderstood your suggestion.

Hewan
  
--- On Fri, 2/11/11, Nick Cox <njcoxstata@gmail.com> wrote:

> From: Nick Cox <njcoxstata@gmail.com>
> Subject: Re: st: computation across rows
> To: statalist@hsphsun2.harvard.edu
> Date: Friday, February 11, 2011, 1:10 AM
> I find it hard to see a general
> pattern under your question. Your toy
> example would seem easiest to solve by mental arithmetic in
> the Data
> Editor, but you wouldn't be asking if that were true of
> your real
> problem.
> 
> Naturally you can just find the subscripts for each
> observation and
> use those, but again I assume from your question you know
> that you can
> do that.
> 
> Some problems a bit like this benefit from a variable
> containing the
> observation number:
> 
> gen long obs = _n
> 
> Then you can find the observation number for -id- 85, etc.
> 
> su obs if id == 82, meanonly
> local obs82 = r(min)
> su obs if id == 85, meanonly
> local obs85 = r(min)
> su obs if id == 89, meanonly
> local obs89 = r(min)
> 
> The assumption here is that each identifier occurs once
> only so you
> can indifferently pick up r(min), r(max) or r(mean) after
> -summarize-.
> Then you can do things like
> 
> replace Y = Y[`obs85'] + Y[`obs89'] in `obs82'
> 
> See also
> 
> SJ-6-4  dm0025  . . . . . . . . . .  Stata
> tip 36: Which observations? Erratum
>         . . . . . . . . . . . . . . . .
> . . . . . . . . . . . . . .  N. J. Cox
>         Q4/06   SJ
> 6(4):596             
>                 (no
> commands)
>         correction of example code for
> Stata tip 36
> 
> SJ-6-3  dm0025  . . . . . . . . . . . . . . 
> Stata tip 36: Which observations?
>         . . . . . . . . . . . . . . . .
> . . . . . . . . . . . . . .  N. J. Cox
>         Q3/06   SJ
> 6(3):430--432           
>                
>      (no commands)
>         tip for identifying which
> observations satisfy some
>         specified condition
> 
> Nick
> 
> On Thu, Feb 10, 2011 at 8:17 PM, Hewan Belay <hewan_belay@yahoo.com>
> wrote:
> > Dear Statalist,
> >
> > I am trying to do something I expected to be very
> simple, but I'm not finding a
> > straightforward way to do this. Essentially, I would
> like to do discrete
> > computations across rows/observations (ie within
> variables). Here is an example
> > of what I mean, consider this toy dataset (I hope the
> table is easily visible):
> >
> > id       Y    Z    W
> > 81       4    1    3
> > 82       .     0    9
> > 85      2     4    1
> > 87      3     1     4
> > 89      6     2    5
> >
> > For the id #82, I want the variables Y and W to take
> on the value that results
> > when adding their respective values for IDs #85 and
> 89. In the above toy
> > example, that means that the missing value would
> become an 8, and the value of 9
> > would change to 6. I definitely don't want to xpose or
> reshape my data, as I
> > have several other operations I am doing on the data
> given its current
> > structure.
> >
> >
> > So generally speaking, my question is how to do
> computations across selected
> > rows. I only have info on this with regard to
> computations X rows above or
> > beyond the concerned row, that is using the operation
> [n+1], or when getting
> > statistics for groups of rows using the -by- command.
> >
> 
> *
> *   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/
> 


      

*
*   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–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index