我无法理解如何在lubridate中使用guess_formats函数.我有一些日期的矢量以一些未知的格式/顺序排列.我想将它们转换为Date对象(或至少转换为尽可能多的对象).以下代码是我尝试过的:
library(lubridate)
sampleDates <- c("4/6/2004","4/6/2004","4/6/2004","4/7/2004",
"4/6/2004","4/7/2004","2014-06-28","2014-06-30","2014-07-12",
"2014-07-29","2014-07-29","2014-08-12")
formats <- guess_formats(sampleDates, c("Ymd", "mdY"))
dates <- as.Date(sampleDates, format=formats)
Run Code Online (Sandbox Code Playgroud)
这给了所有NA.
这显然只是一个简短的例子.在实际情况中,我不知道各种格式散布在哪里,我不会100%确定只有%m /%d /%Y和%Y-%m-%d.有人能让我知道A.在这个例子中如何使用guess_formats或者B.有更适合在lubridate/base R中使用的东西,希望没有很多正则表达式.谢谢!
编辑:我也尝试过parse_date_time.我不明白的是这个例子的以下工作:
parse_date_time(sampleDates,
orders = c("Ymd", "mdY"),
locale = "eng")
Run Code Online (Sandbox Code Playgroud)
但这不是:
parse_date_time(sampleDates,
orders = c("mdY", "Ydm"),
locale = "eng")
Run Code Online (Sandbox Code Playgroud)
在我的实际数据集中,我不知道格式的顺序,这似乎对此函数很重要.
双重编辑:Dur,好的,我看到我在第一个parse_date_time示例中有Ymd而在第二个中有Ydm ...继续.
我不明白警告信息:
警告消息:在download.file中(url,temp,quiet = TRUE,mode ="wb"):已下载长度2533!=报告长度2533
如果数字不同,我可以理解.重现的代码:
url <- "http://www.waterqualitydata.us/Result/search?siteid=USGS-01594440&pCode=01075&countrycode=US&mimeType=tsv&zip=yes"
temp <- tempfile()
download.file(url,temp, quiet=TRUE, mode='wb')
doc <- unzip(temp)
unlink(temp)
retval <- read.delim(doc , header = TRUE, quote="\"",
dec=".", sep='\t',
fill = TRUE)
Run Code Online (Sandbox Code Playgroud)
我可以压制警告,但我想确保我也没有做错任何事.谢谢!
编辑:添加read.delim部分以获取数据帧.我的平台是x86_64-w64-mingw32/x64(64位),R版本3.1.2(2014-10-31).