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, [EMAIL PROTECTED] 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 ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html