Order data in chronological order based on dates formatted% d /% m /% Y

I have some data that needs to be formatted as (% d /% m /% Y). The data is from a chronological order, because it is sorted by the first number, which is a day, not a month.

I hope I can tell order or reorder that I want the sorting to happen differently. I just don't know how to do this.

Below is the date data:

 date 1/1/2009 1/1/2010 1/1/2011 5/4/2009 5/4/2011 10/2/2009 10/3/2011 15/9/2010 15/3/2009 31/12/2011 31/7/2009 

Thanks for any suggestions.

+8
r order date-formatting
source share
3 answers

When the order on the date column converts the date format.

 df[order(as.Date(df$date,format="%d/%m/%Y")),,drop=FALSE] date 1 1/1/2009 6 10/2/2009 9 15/3/2009 4 5/4/2009 11 31/7/2009 2 1/1/2010 8 15/9/2010 3 1/1/2011 7 10/3/2011 5 5/4/2011 10 31/12/2011 
+10
source share

This is easier with a little help from plyr and lubridate:

 library(lubridate) library(plyr) df <- read.csv(text = "date 1/1/2009 1/1/2010 1/1/2011 5/4/2009 5/4/2011 10/2/2009 10/3/2011 15/9/2010 15/3/2009 31/12/2011 31/7/2009", stringsAsFactors = FALSE) # Convert variable to date df$date <- dmy(df$date) arrange(df, date) # Or for descending order arrange(df, desc(date)) 
+8
source share

Awful, but it seems to work:

 date[order(sapply(strsplit(date, "/"), function(x) { paste(x[3], sprintf("%02d", as.integer(x[1])), sprintf("%02d", as.integer(x[2])), sep="") } ) ) ] 
0
source share

All Articles