Statalist


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

st: RE: RE: Identify min and max observations


From   "Nick Cox" <n.j.cox@durham.ac.uk>
To   <statalist@hsphsun2.harvard.edu>
Subject   st: RE: RE: Identify min and max observations
Date   Mon, 28 Sep 2009 11:24:05 +0100

Some nuances in understanding this code:

In the first pair of statements below, the -bys id- is essential as the
whole point is that minimum and maximum are to be determined within
-id-.  

bys id: egen `min'=min(date)
bys id: egen `max'=max(date)

(In fact, the second -bys- could be just -by:-, because at that point we
know the data are sorted as desired.) 

In the second pair of statements below, the -bys id- does no harm but is
dispensable. Once the minima and maxima have been determined, flagging
which observations equal them does not require the aegis of -by:-. 

bys id: gen byte mindate=date==`min'
bys id: gen byte maxdate=date==`max'

They could therefore be 

gen byte mindate=date==`min'
gen byte maxdate=date==`max'

Nick 
n.j.cox@durham.ac.uk 

Martin Weiss

You want your admdate to be numeric for sure. You could then -sort-
within
id and take the first and last value. A more general solution is:

**************
clear*

inp id str10  admdate      
1  12may06       
1  20jun06
1  30aug06       
2  10may06       
2  10sep06
2  20dec06
2  10jan07       
3  10aug06       
3  20sep06
3  10dec06
3  15jan07
3  10feb07  
end

compress

gen date=date(admdate, "DM20Y")
format date %tdMonth_DD,_CCYY

list, noobs  

tempvar min max
bys id: egen `min'=min(date)
bys id: egen `max'=max(date)

bys id: gen byte mindate=date==`min'
bys id: gen byte maxdate=date==`max'

list, noobs sepby(id)

Thomas Cars

I have a dataset including subjects (id) and date for administration  
of a specific drug (adm.date)

I now want to construct a variable telling me which one of the  
observations (adm.date) in each subject (id) that has the lowest date  
(min) and the highest date(max).

The number of adm.date can vary in each subject from 1 to 10.


Example (min=1 och max=2)



Id                   adm.date        min/max

1                    12may06         1
1                    20jun06
1                    30aug06         2
2                    10may06         1
2                    10sep06
2                    20dec06
2                    10jan07         2
3                    10aug06         1
3                    20sep06
3                    10dec06
3                    15jan07
3                    10feb07         2

And so on?


*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index