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

Tony Plate tplate at acm.org
Mon Dec 28 23:52:36 CET 2009


You can use a numeric value for the quote= argument to write.table to specify which columns should have quotes.

> d <- data.frame(ticker=c("IBM", "IBM"), date = as.Date(c("2009-12-03", "2009-12-04")), price=c(120.00, 123.00))
> d1 <- as.data.frame(lapply(d, function(x) if (is(x, "Date")) format(x, "%m/%d/%Y") else x))
> write.table(d1, quote=which(sapply(d, function(x) !is.numeric(x) & !is(x, "Date"))))
"ticker" "date" "price"
"1" "IBM" 12/03/2009 120
"2" "IBM" 12/04/2009 123
> 

-- Tony Plate


William Dunlap wrote:
>> -----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.
>>
> 
> ______________________________________________
> 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