首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lubridate解析日期警告

Lubridate解析日期警告
EN

Stack Overflow用户
提问于 2013-11-21 12:31:15
回答 2查看 5.3K关注 0票数 2

当我尝试读取包含许多日期的vector a时,我会收到警告。

这是我用write(a,"a.txt")生成的vector a的文本文件。因为它很大,我已经把它附加到Google drive上,任何人都可以下载。基本上,它包含从2012-01-01到2012-12-31的日期,重复多次。

https://drive.google.com/file/d/0B12dCpdCVHeSZjA4YmVXNmV6VUU/edit?usp=sharing

我试图这样做,但收到了一条警告消息。

代码语言:javascript
复制
> head(ymd(a))
[1] "2012-01-01 UTC" "2012-01-01 UTC" "2012-01-01 UTC" "2012-01-01 UTC" "2012-01-01 UTC"
[6] "2012-01-01 UTC"
Warning message:
 7202 failed to parse. 

查看警告消息,很容易假设日期格式是错误的。但是,YYYY-MM-DD是lubridate支持的格式。当我对向量的一部分执行同样的操作时,什么也不会发生。

代码语言:javascript
复制
> head(ymd(a[1:50000]))
[1] "2012-01-01 UTC" "2012-01-01 UTC" "2012-01-01 UTC" "2012-01-01 UTC" "2012-01-01 UTC"
[6] "2012-01-01 UTC"

使用strptimeas.Date也不会产生任何错误

代码语言:javascript
复制
> head(strptime(a,format="%Y-%m-%d"))
[1] "2012-01-01" "2012-01-01" "2012-01-01" "2012-01-01" "2012-01-01" "2012-01-01"
> head(as.Date(a))
[1] "2012-01-01" "2012-01-01" "2012-01-01" "2012-01-01" "2012-01-01" "2012-01-01"

我的问题是,我需要担心警告消息,还是可以安全地忽略它?

EN

回答 2

Stack Overflow用户

发布于 2013-11-21 14:02:52

代码语言:javascript
复制
> b <- which( is.na( ymd(as.character(a[[1]]), tz="UTC") ) )
Warning message:
 7202 failed to parse. 
> head(b)
[1] 122241 122242 122243 122244 122245 122246
> as.character(a[[1]])[head(b)]
[1] "2012-03-01(1)" "2012-03-01(1)" "2012-03-01(1)" "2012-03-01(1)" "2012-03-01(1)"
[6] "2012-03-01(1)"

看起来有一串这样的异常日期被很大的空格隔开:

代码语言:javascript
复制
rle( diff(b) )
Run Length Encoding
  lengths: int [1:15] 1183 1 831 1 928 1 605 1 639 1 ...
  values : int [1:15] 1 111657 1 29857 1 26065 1 25111 1 65729 ...
票数 2
EN

Stack Overflow用户

发布于 2017-06-06 20:33:47

使用anydate包的不同解决方案,这似乎是有效的。

代码语言:javascript
复制
library(anydate)
text <- anydate(a[, 1])
sum(is.na(text)) 

# 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20112532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档