[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