gpt4 book ai didi

r - 使用 dplyr 基于大于日期时间的 POSIXct 日期和时间的子集数据框

转载 作者:行者123 更新时间:2023-12-02 22:20:13 25 4
gpt4 key购买 nike

我不确定选择日期时间作为 POSIXct 格式会出现什么问题。我读过一些关于基于 as.Date 对数据帧进行子集化的评论,我可以让它正常工作。我还读过许多帖子,建议过滤 POSIXct 格式应该有效,但由于某种原因我无法让它工作。

示例数据框:

library(lubridate)
library(dplyr)

date_test <- seq(ymd_hms('2016-07-01 00:00:00'),ymd_hms('2016-08-01 00:00:00'), by = '15 min')
date_test <- data.frame(date_test)
date_test$datetime <- date_test$date_test
date_test <- select(date_test, -date_test)

我检查它是否采用 POSIXct 格式,然后尝试了多种方法对大于 2016-07-01 01:15:00 的数据帧进行子集化。但是,输出永远不会显示小于 2016-07-01 01:15:00 的日期时间被删除。如果有人在某个地方问过这个问题,但我找不到它,我很抱歉,但我已经查看并尝试让它发挥作用。我使用 UTC 作为时区以避免夏令时问题,因此这不是这里的问题 - 除非过滤器需要它。

class(date_test$datetime)

date_test <- date_test %>% filter(datetime > '2016-07-01 01:15:00')

date_test <- date_test %>%
filter(datetime > as.POSIXct("2016-07-01 00:15"))

date_test <- subset(date_test, datetime > as.POSIXct('2016-07-01 01:15:00'))

现在,如果我使用以下内容进行过滤:

date_test <- date_test %>% 
filter(datetime > as.POSIXct("2016-07-10 01:15:00"))

输出很奇怪,晚了一天而且时间错误?

2016-07-09 13:30:00
2016-07-09 13:45:00
2016-07-09 14:00:00
2016-07-09 14:15:00
2016-07-09 14:30:00

如果有帮助的话,我正在使用 MAC OS Sierra 和 R Studio 版本 1.0.143 以及 R You Stupid Darkness、DPLYR 0.5 和 Lubridate 1.6

最佳答案

ymd_hms 默认使用“UTC”时区中的 POSIXct 时间 - as.POSIXct 使用系统时区(例如 - 我的澳大利亚) - 您需要始终使用 ymd_hms 或根据 Dave 在评论中的建议更改为“UTC”时区。

例如:这些示例有效:

date_test <- seq(ymd_hms('2016-07-01 00:30:00'),ymd_hms('2016-07-01 01:30:00'), by = '15 min')
date_test <- data.frame(datetime=date_test)
date_test

# datetime
#1 2016-07-01 00:30:00
#2 2016-07-01 00:45:00
#3 2016-07-01 01:00:00
#4 2016-07-01 01:15:00
#5 2016-07-01 01:30:00

date_test %>%
filter(datetime > as.POSIXct("2016-07-01 01:00:00", tz="UTC"))

date_test %>%
filter(datetime > ymd_hms("2016-07-01 01:00:00"))

# datetime
#1 2016-07-01 01:15:00
#2 2016-07-01 01:30:00

关于r - 使用 dplyr 基于大于日期时间的 POSIXct 日期和时间的子集数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com