[R] sorting by date

Prof Brian Ripley ripley at stats.ox.ac.uk
Mon Feb 2 23:38:07 CET 2004


Convert to POSIXct and sort.

Note that tapply will coerce to a factor, so you need to create a factor 
with the levels sorted as you want them: just sorting date will not help.
Something like

udate <- unique(date)
lev <- udate[sort.list(as.POSIXct(strptime(udate, "%m/%d/%Y")))]
date <- factor(date, levels=lev)


On Mon, 2 Feb 2004, Jeff Jorgensen wrote:

> I have set up a data.frame and one of the columns contains a date of the 
> form (with slashes as separators):
> 
> mm/dd/yyyy
> 
> I would like to use formulas on other columns in the data.frame organized 
> by date, for example:
> 
> tapply(var1, sort(date), mean)
> 
> However, when I try sort(date) it sorts based on the first two entries in 
> the date field:
> 
> 9/1/2001	9/1/2002	9/1/2003	9/2/2001 ...
> 5.6		7.5		6.4		7.0 ...
> 
> Instead of:
> 
> 9/1/2001	9/2/2001	9/3/2001	9/4/2001 ...
> 5.6		6.1		7.2		6.8 ...
> 
> I would greatly appreciate any help in sorting chronologically.  Do I need 
> to create separate columns for month, day, and year, and then use order() 
> and then stipulate the hierarchy for which to sort the output?  Or, is 
> there some other more efficient way?

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list