On Mon, 2007-10-08 at 07:26 -0700, Samuel Okoye wrote:> Hello, I have got the following problem:
> > times <- c("02.07.2007",
"03.07.2007","03.09.2007",
"04.07.2007","05.07.2007")
> > mode(times)
> [1] "numeric"
> > tim <- as.character(times)
> > mode(tim)
> [1] "character"
> > sort(times)
> [1] "02.07.2007" "03.07.2007" "03.09.2007"
"04.07.2007" "05.07.2007"
>
> Is it possible to get
> > function(sort(times))
> [1] "02.07.2007" "03.07.2007" "04.07.2007"
"05.07.2007" "03.09.2007"
>
> Thank you very much in advance,
> Sam
You need to convert 'times' to a Date class object, which can be sorted
as dates and then re-formatted for output:
> format(sort(as.Date(times, format = "%d.%m.%Y")),
"%d.%m.%Y")
[1] "02.07.2007" "03.07.2007" "04.07.2007"
"05.07.2007" "03.09.2007"
Otherwise, you are sorting based upon a character vector, the order of
which will be locale dependent. Locale issues are likely why your
'times' object is initially a numeric vector and not a character
vector.
You can of course encapsulate the above in a function.
See ?as.Date
HTH,
Marc Schwartz