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-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of george....@bnymellon.com
Sent: Monday, December 28, 2009 8:18 AM
To: r-help@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....@bnymellon.com
To:
r-help@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-boun...@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@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@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@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@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.

Reply via email to