[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