【问题标题】:Reading csv values as.date returns NA读取 csv 值 as.date 返回 NA
【发布时间】:2016-11-16 01:01:23
【问题描述】:

我正在尝试使用 R 读取 csv 值 as.date。我的 csv 文件仅包含一列,其中列出的日期如下:

     x
1   20010101
2   20010117
3   20010201
4   20010217
5   20010301
6   20010317
7   20010401
8   20010417
9   20010501
10  20010517

我使用的脚本是:

d <- read.csv("D:\\test.csv", header = TRUE, sep = "", stringsAsFactors = FALSE)
> str(d)
'data.frame':   345 obs. of  1 variable:
 $ x: int  20010101 20010117 20010201 20010217 20010301 20010317 20010401 20010417 20010501 20010517 ...
date_EVI <- as.Date(paste(d$x), "%mm%dd%YYYY") 

但是回报都是NA。

有什么建议吗?

【问题讨论】:

  • 你可以试试date_EVI &lt;- as.Date(d$x, "%Y%m%d")
  • 并使用as.character而不是paste,在这种情况下,最好使用强制类型的函数而不是更高级别的函数。
  • as.Date(更直接的见?strptime
  • @RHertel date 命令的常用格式,但我确实没有检查 R strptime,首先是错误的顺序。
  • 感谢@Tensibai,as.character 解决了!

标签: r csv na


【解决方案1】:

您的日期格式似乎有误。试试%Y%m%d

例如:

dates <- c("20010101", "20010117", "20010517")
as.Date(dates, "%Y%m%d")

并应用于您的代码:

d <- read.csv("D:\\test.csv", header = TRUE, sep = "", stringsAsFactors = FALSE)
date_EVI <- as.Date(as.character(d$x), "%Y%m%d")

【讨论】:

  • 我有 345 个日期,如果您知道按照您提到的方式编写它们的简单方法,请告诉我......
  • as.Date 是一个接受值列表的函数。在你的情况下,dx 是一个字符串列表,所以这样做:as.Date(d$x, "%Y%m%d")
【解决方案2】:

非常感谢所有建议。

改变这一行:

`date_EVI <- as.Date(paste(d$x), "%mm%dd%YYYY")`

到这里:

 date_EVI <- as.Date(as.character(d$x),  "%Y%m%d")

完美解决了问题。 谢谢Tensibai

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2021-05-03
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    相关资源
    最近更新 更多