【发布时间】:2015-03-08 09:31:19
【问题描述】:
可以在 R 中从数字类型甚至小数值构建日期。这不是很常见,但例如在平均日期时会发生这种情况。不幸的是,他们似乎打破了split
> as.Date(-1, origin = "1970-01-01")
[1] "1969-12-31"
> as.Date(-1.0001, origin = "1970-01-01")
[1] "1969-12-30"
> split(as.Date(-1, origin = "1970-01-01"), 1)[[1]]
[1] "1969-12-31"
> split(as.Date(-1.0001, origin = "1970-01-01"), 1)[[1]]
[1] "1969-12-31" #this is wrong
> unclass(split(as.Date(-1, origin = "1970-01-01"), 1)[[1]])
[1] -1
> unclass(split(as.Date(-1.0001, origin = "1970-01-01"), 1)[[1]])
[1] -1 #this is "why"
因此,split 使两个不同的日期相等。人们同意这是一个错误还是我错过了深层原因?任何解决方法?谢谢
【问题讨论】:
-
稻草人解决方法:
lapply(split(as.character(dates), index), as.Date)。保留日期但更改基础表示。需要lapply,在某些情况下很慢。
标签: r split type-conversion