[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
Re: st: Structure for making line by line changes?
----- Original Message -----
From: "Daniel Sabath" <firstname.lastname@example.org>
Sent: Friday, April 25, 2003 7:11 PM
Subject: Re: st: Structure for making line by line changes?
> On Fri, 25 Apr 2003, Fred Wolfe wrote:
> > At 12:06 PM 4/25/2003 -0700, you wrote:
> > >Hello,
> > >
> > >I am very new to Stata and am having some difficulty wrapping my brain
> > >around Stata's methods of data processing. I would like to be able to
> > >process a dataset line by line rather then all at once. I have found
> > >references to the fact that "if" statements don't work as expected and
> > >very good comparison between STATA and SAS which briefly mentions some
> > >the paradigm shifts.
> > >
> > >My question to the group is how would you deal with the line by line
> > >processing issue? I need to change each line based on a calulated value
> > >that is dependant upon data in that line.
> > >
> > >The "if" qualifier would seem to solve this for some cases, but not
> > >program has to be called or a really complex comparison has to be done.
> > Nick's reply is to indicate that you really don't need to loop over
> > observations. People coming from SAS very often think that you do. Using
> > Stata, in some instances you might need to create an intermediate
> > Following up on Nick's reply, we have a problem thinking of cases where
> > really need to do it the way you suggest. Perhaps a specific example
> > clarify your problem for us.
> > Fred Wolfe
> Thanks Fred and Nick,
> Here's the actual example. Given a data set that looks like
> A1 , A2 , A3 , A4 , A5 , a6
> row1 1 3 . 6 3 4
> row2 3 4 2 . 1 5
> row3 4 5 2 5 6 2
> I need to pull out the top 3 values and place them into B1, B2 and B3
> so that
> B1 , B2 , B3
> row1 6 4 3
> row2 5 4 3
> row3 6 5 5
No doubt there are more clever ways to do this, but how about:
mvencode _all, mv(-99999) /* or some number smaller than minimum of data set
rowsort a* ,gen(b1 b2 b3 b4 b5 b6) desc
mvdecode _all, mv(-99999)
You can locate -rowsort- with -findit rowsort-
* For searches and help try: