Amy*_*y M 5 format excel r date read.csv
我有一大段代码,我经常运行这些代码来读入和清理 .csv 文件。清理过程的一部分是识别日期列并将它们转换为正确的格式,我用一个函数来完成(见下文)。我将日期格式设置为转换为,"%d/%m/%Y"
因为这是我在 MS Excel (office 2010) 中查看时它在 .csv 文件中的显示方式。
> convert.dates
function(data, datestring, excludestring=NULL, extradatecols=NULL, dateformat) {
if(is.null(extradatecols)) {datecols1 <- grep(datestring, names(data), value=TRUE)} else {datecols1 <- c(grep(datestring, names(data), value=TRUE), extradatecols)}
if(is.null(excludestring)) {datecols2 <- datecols1} else {datecols2 <- datecols1[-grep(excludestring, datecols1)]}
data[, datecols2] = data.frame(lapply(data[, datecols2], as.Date, format=dateformat), stringsAsFactors=FALSE)
data
}
Run Code Online (Sandbox Code Playgroud)
我最近升级到 R 3.2.3 并将我的 R Studio 也更新到版本 0.99.489。
更新后,尽管选择了正确的格式(基于我在 .csv 文件中看到的内容),我的函数仍无法转换日期。进一步检查后,read.csv
将我的日期从"%d/%m/%Y"
我在 .csv 文件中观察到的格式转换为"%Y-%m-%d"
并将它们存储为一个因素。然后我就能够应用我的 convert.dates 函数和"%Y-%m-%d"
格式并且它起作用了。
> str(mydata$dob)
Factor w/ 3069 levels "1960-01-15" "1977-05-03" "2014-01-19" NA NA ...
> mydata <- convert.dates(data = gdw, datestring = "date", excludestring = NULL, extradatecols = c("dob"), dateformat = "%Y-%m-%d")
> str(mydata$dob)
Date[1:5000], format: "1960-01-15" "1977-05-03" "2014-01-19" NA NA ...
Run Code Online (Sandbox Code Playgroud)
如果这现在是 read.csv 的预期行为,这没什么大不了的,但我在发行说明中找不到任何关于此的信息,所以只想检查 - read.csv 是否应该识别%d/%m/%Y
格式中的任何内容并进行转换它%Y-%m-%d
在读入时,或者这与 MS Excel 在查看 .csv 文件时自动转换日期的显示有关(尽管它们的实际写入方式可能不同)?.csv 文件是从 postgres 数据库下载的。我不确定原始数据库中通常的日期格式是什么。
任何见解将不胜感激。
归档时间: |
|
查看次数: |
616 次 |
最近记录: |