[R] How to change the default Date format for write.csvfunction?

William Dunlap wdunlap at tibco.com
Mon Dec 28 23:18:29 CET 2009


> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of 
> George.Zou at bnymellon.com
> Sent: Monday, December 28, 2009 8:18 AM
> To: r-help at r-project.org
> Subject: Re: [R] How to change the default Date format for 
> write.csvfunction?
> 
> Hi,
> 
> This problem might be a little harder than it appears. 
> 
> I receive a few emails all suggesting that convert the Date field to 
> character by calling format(date, "%m/%d/%Y") in one way or 
> another. Well, 
> this is not the solution I'm looking for and it doesn't work 
> for me.   All 
> the date fields are generated with quotes around them, which will be 
> treated by other software as string instead of date.   Please 
> note, the 
> write.csv() function doesn't put quotes around date.   All I 
> need is to 
> change the format behavior of Date without adding any quotes.  So the 
> output of CSV I'm looking for should be:
> 
> "ticker","date","price"
> "IBM",12/03/2009,120
> "IBM",12/04/2009,123
> 
> Not this:
> 
> "ticker","date","price"
> "IBM","12/03/2009",120
> "IBM","12/04/2009",123

Write a function that adds double quotes
for the columns with classes that you want
quoted and call write.csv with quote=FALSE.
E.g., the following function f puts double
quotes around character and factor columns:

   f <- function (dataframe) 
   {
       doubleQuoteNoFancy <- function(x) paste("\"", x, "\"", sep = "")
       for (i in seq_along(dataframe)) {
           if (is(dataframe[[i]], "character")) 
               dataframe[[i]] <- doubleQuoteNoFancy(dataframe[[i]])
           else if (is(dataframe[[i]], "factor")) 
               levels(dataframe[[i]]) <-
doubleQuoteNoFancy(levels(dataframe[[i]]))
           else if (is(dataframe[[i]], "Date"))
               dataframe[[i]] <- format(dataframe[[i]], "%m/%d/%Y")
       }
       colnames(dataframe) <- doubleQuoteNoFancy(colnames(dataframe))
       dataframe
   }

Use it as:
   > write.csv(f(d), file=stdout(), quote=FALSE, row.names=FALSE)
   "ticker","date","price"
   "IBM",12/03/2009,120
   "IBM",12/04/2009,123

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 

> 
> Thanks for trying though.
> 
> George
> 
> 
> 
> From:
> George.Zou at bnymellon.com
> To:
> r-help at r-project.org
> Date:
> 12/28/2009 10:20 AM
> Subject:
> [R] How to change the default Date format for write.csv function?
> Sent by:
> r-help-bounces at r-project.org
> 
> 
> 
> Hi,
> 
> I have a data.frame containing a Date column.  When using write.csv() 
> function to generate a CSV file, I always get the Date column 
> formatted as 
> 
> "YYYY-MM-DD".   I would like to have it formatted as 
> "MM/DD/YYYY", but 
> could not find an  easy way to do it.    Here is the test code:
> 
> d <- data.frame(ticker=c("IBM", "IBM"), date = 
> as.Date(c("2009-12-03", 
> "2009-12-04")), price=c(120.00, 123.00))
> write.csv(d, file="C:/temp/test.csv", row.names=FALSE)
> 
> The test.csv generated looks like this:
> 
> "ticker","date","price"
> "IBM",2009-12-03,120
> "IBM",2009-12-04,123
> 
> I would like to have the date fields in the CSV formatted as 
> "MM/DD/YYYY". 
> 
>  Is there any easy way to do this?
> 
> Thanks in advance.
> 
> George Zou
> 
> The information contained in this e-mail, and any attachment, is 
> confidential and is intended solely for the use of the 
> intended recipient. 
> Access, copying or re-use of the e-mail or any attachment, or any 
> information contained therein, by any other person is not 
> authorized. If 
> you are not the intended recipient please return the e-mail 
> to the sender 
> and delete it from your computer. Although we attempt to 
> sweep e-mail and 
> attachments for viruses, we do not guarantee that either are 
> virus-free 
> and accept no liability for any damage sustained as a result 
> of viruses. 
> 
> Please refer to http://disclaimer.bnymellon.com/eu.htm for certain 
> disclosures relating to European legal entities.
>                  [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 
> 
> 
> 
> The information contained in this e-mail, and any attachment, 
> is confidential and is intended solely for the use of the 
> intended recipient. Access, copying or re-use of the e-mail 
> or any attachment, or any information contained therein, by 
> any other person is not authorized. If you are not the 
> intended recipient please return the e-mail to the sender and 
> delete it from your computer. Although we attempt to sweep 
> e-mail and attachments for viruses, we do not guarantee that 
> either are virus-free and accept no liability for any damage 
> sustained as a result of viruses. 
> 
> Please refer to http://disclaimer.bnymellon.com/eu.htm for 
> certain disclosures relating to European legal entities.
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 




More information about the R-help mailing list