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.