[R] Default Format for Dates?

Gabor Grothendieck ggrothendieck at gmail.com
Fri Jun 10 22:11:00 CEST 2005


On 6/10/05, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> On 6/10/05, khobson at fd9ns01.okladot.state.ok.us
> <khobson at fd9ns01.okladot.state.ok.us> wrote:
> >
> >
> >
> >
> > Is there anyway to preset date formats?  I have a date from a cover.dbf
> > that is shown as this:
> > > cover$FINALREPOR
> > [1] "2003-06-24"
> >
> > The numeric value in cover$FINALREPOR is 12227.  I'd rather not create
> > another vector to hold the properly formatted date.
> >
> > When I put this in a WordPerfect merge, I want the date to be June 24,
> > 2003.   I could take care of the problem in a WordPerfect macro but I'd
> > rather do it as an R default date format if possible.
> >
> 
> I am not entirely sure I understand what you are asking but I assume
> you want a Date variable such that print, format and as.character,
> when applied to it, produce default output of a prespecified format.
> 
> Although I do not think Date will do that, chron can
> associate a default format with a chron variable.
> 
> library(chron)
> 
> # custom format for a dates (i.e. chron) object
> my.format <- function(x) format(as.Date(dates(x)), "%B %d %Y")
> 
> # test data
> my.Date <- Sys.Date() + 0:9
> 
> # convert to chron and associate my.format to it
> my.chron <- chron(unclass(my.Date), out.format = my.format)
> 
> print(my.chron)
> my.chron
> as.character(my.chron)
> format(my.chron)
> 
> Note that you can find more information on chron and various
> conversions in my article in RNews 4/1 and especially the table
> at the end of that article.
> 

Here is a different solution that does not involve chron.  In this one
we define a subclass of Date called mdy that has a default
format as you specified implemented by defining print, as.character
and format methods for it:

# define mdy methods
print.mdy <- print.Date
as.character.mdy <- format.mdy <- function(x, format = "%B %d %Y")
	format(structure(x, class = "Date"), format = format)

# test data of class mdy (which is a subclass of Date)
x <- Sys.Date() + 0:9 
class(x) <- c("mdy", "Date")

# test out print, format and as.character methods for class mdy
print(x)
format(x)
as.character(x)
x




More information about the R-help mailing list