sorting by date
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