【发布时间】:2013-06-10 12:50:04
【问题描述】:
我一直在尝试查看一个数据框,提取 POSIXct 列的日期组件与某个值匹配的所有行。我遇到了以下内容,这让我非常困惑:as.Date(as.POSIXct(...)) 并不总是返回正确的日期。
> dt <- as.POSIXct('2012-08-06 09:35:23')
[1] "2012-08-06 09:35:23 EST"
> as.Date(dt)
[1] "2012-08-05"
为什么'2012-08-06 09:35:23'的日期等于'2012-08-05?
我怀疑这与使用的不同时区有关,所以注意到dt 的时区是“EST”,我把它给了as.Date::
> as.Date(as.POSIXct('2012-08-06 09:35:23'), tz='EST')
[1] "2012-08-05"
但它仍然返回 2012-08-05。
这是为什么?如何在我的数据框中找到日期为 2012-08-06 的所有日期时间? (因为subset(my.df, as.character(as.Date(datetime), tz='EST') == '2012-08-06') 不会返回日期时间为dt 的行,即使这确实发生在日期 2012-08-06...)?
添加详细信息:Linux 64 位(虽然可以在 32 位上重现),可以在 R 3.0.1 和 3.0.0 上获得此功能,我目前是 AEST(澳大利亚东部标准时间)
【问题讨论】:
-
在这里按预期工作(时区 CEST 中的 R 3.0.0)
-
@profPlum,非常无益的评论。我不能或不会使用 Python 的原因有很多——例如工作要求,在更大的软件套件中工作,需要做大量的统计分析/绘图,R 可以更好地支持开箱即用,或者只是流利地使用 R 而不是 Python!
-
@mathematical.coffee 抱歉,我正处于了解 R 的幻灭阶段。我只是看到语言基础上有很多漏洞,但我承认这只是一种观点。