【问题标题】:Splitting dataset based on date in R, using library (lubridate)使用库(lubridate)根据 R 中的日期拆分数据集
【发布时间】:2015-12-19 08:47:20
【问题描述】:

在拆分数据集时,我最终遇到以下错误,并寻求一些建议来克服它:

dt=read.csv("C:/xx/fData.csv")
testdata = dt[year(dt$date) < 2010,]
valid = dt[year(dt$date) > 2010,]

> training = dt[year(dt$date) < 2010,]
Error in as.POSIXlt.character(as.character(x), ...) : 
character string is not in a standard unambiguous format
> testing = dt[year(dt$date) > 2010,]
Error in as.POSIXlt.character(as.character(x), ...) : 

ps:fData 看起来像

    | date   |   number
----------------------
1   |1/1/2011|  0
2   |1/2/2011|  0

【问题讨论】:

  • 可能是您的 dt$date 字段不属于 date 类。你能试试class(dt$date) 来检查一下吗?
  • 这也可能发生,这是哪一年:03-05-12?是2003 还是2012?在这种情况和类似情况下,您应该定义as.POSIXlt 的格式。在您的情况下,可能是一天和一个月。
  • @Edwin: class(dt$date) 结果为 factor
  • @Soheil:根据您的示例,year 将是 2012,因为日期格式是 mm/dd/yyyy
  • @Soheil:根据您的建议,您如何为as.POSIXlt 定义format

标签: r date slice lubridate


【解决方案1】:

鉴于您的字符串的第一部分是月份日期,第二部分是月份,您应该在调用 year 函数之前将字符串转换为日期格式

dt$date <- as.Date(dt$date,'%d/%m/%Y')

【讨论】:

  • 非常感谢埃德温。语法确实有效。此外,快速检查后,基于日期的拆分看起来是正确的。干杯。
猜你喜欢
  • 2021-10-04
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-18
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多