【问题标题】:R read.zoo error for incorrect date formatR read.zoo 错误日期格式错误
【发布时间】:2014-04-11 17:40:49
【问题描述】:

我有一个包含一个日期列和 10 个其他列的数据。 日期列的格式为 199010。 所以它是yyyymm。 zoo/xts 似乎要求日期中包含日期信息。 有没有办法解决这个问题?

继承我的数据

structure(list(Date = 198901:198905, NoDur = c(5.66, -1.44, 5.51, 
5.68, 5.32)), .Names = c("Date", "NoDur"), class = "data.frame", row.names = c(NA, 
5L))


data<-read.zoo("C:/***/data_port.csv",sep=",",format="%Y%m",header=TRUE,index.column=1,colClasses=c("character",rep("numeric",1)))

【问题讨论】:

  • 抱歉,那是什么?它似乎没有直接回答我的问题。我在阅读时迷失了自己。
  • 该链接无法回答您的问题。它向您展示了如何提出问题。关键要求是海报必须提供可重复的示例。这意味着任何人都可以简单地将其从您的问题复制到剪贴板并将其粘贴到他们的 R 会话中,而无需额外的工作,这将运行您的代码并重现问题。
  • 希望这会有所帮助。我的原始 csv 数据如上表所示。由于日期结构,我无法读取它。
  • 在这种情况下不会使用 dput,因为输入应该是要读入 read.zoo 的数据。请参阅答案以了解如何以可重复的方式指定它。

标签: r xts zoo


【解决方案1】:

代码有这些问题:

  • 数据以空格分隔,但代码指定以逗号分隔
  • 数据没有描述日期,因为没有日期,但代码使用默认日期
  • 数据未以可重复的形式提供。请注意,无需任何额外工作即可简单地复制下面的数据和代码并将其粘贴到 R 中。

试试这个:

Lines <- "Date   NoDur
198901  5.66
198902  -1.44
198903  5.51
198904  5.68
198905  5.32
"

library(zoo)
read.zoo(text = Lines, format = "%Y%m", FUN = as.yearmon, header = TRUE, 
       colClasses = c("character", NA))

上面将索引转换为"yearmon" 类,这在这里可能最有意义,但也可以通过使用FUN = function(x, format) as.Date(as.yearmon(x, format)) 代替 FUN 以上参数。

【讨论】:

  • 非常感谢您的所有工作!这解决了我的问题。我想正确的日期应该有年、月和日。由于我的数据不提供“天”信息。这让人有点难以阅读。但是您的方法非常好。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 2011-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多