【问题标题】:Filtering POSIXct timestamps过滤 POSIXct 时间戳
【发布时间】:2019-12-05 14:40:06
【问题描述】:

我正在尝试按时间过滤大约 50 个条目的 df。

library(dplyr)
library(readr)

rush_hour <- filter(travel_times$`Actual departure` >= as.POSIXct("% 07:00:00") & travel_times$`Actual departure` <= as.POSIXct("% 18:00:00"))

但是,我大多得到 as.POSIXlt.character(x, tz, ...) 中的错误:字符串不是标准的明确格式。显然,我在尝试转换时还有其他的等等。尽管到目前为止没有任何效果,但已经通过了几个包。

我们的时间戳是“%Y-%M-%D %H:%M%:S”,但根据我的任务,我缺乏实际过滤它们的知识。

感谢我能得到的任何帮助。我已经很确定这将是一个非常简单的错误,只要对背后的整个过程有更深入的了解,就可以轻松避免..

更新: 尝试过类似

filter(travel_times$`Actual departure` >= as.POSIXct("% 07:00:00", tz="UTC") & travel_times$`Actual departure` <= as.POSIXct("% 18:00:00"))

我得到错误:as.POSIXlt.character(x, tz, ...) 中的错误:字符串不是标准的明确格式。 可悲的是,我不知道该怎么做。我以前也从未使用过这种格式。

【问题讨论】:

  • "% 07:00:00" 不是有效格式。如果您尝试仅按时间过滤(不考虑日期),您可以使用format 提取时间分量,然后提取数字,或者您可以使用lubridate 包。
  • 所以我不能只过滤列中的特定部分?很高兴知道。格式化时,年、月、日仍然存在还是消失了?尽管日期对于示例而言无关紧要,但我不想就这样删除它们。

标签: r dplyr posixlt


【解决方案1】:

我终于想出了如何过滤任务所需的特定时间段。 我通过使用:

hms <- format(as.POSIXct(travel_times$`Actual departure`), "%H:%M:%S")
hms

rush_hour <- travel_times[hms >= "07:00:00" & hms <= "18:00:00",]

off_peak <- travel_times[hms < "07:00:00" | hms > "18:00:00",]

在stackoverflow上发布的另一个问题中找到了这个答案,但无法再次找到该页面。希望这对遇到类似问题的每个人都有帮助。

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 2021-12-28
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 2021-03-10
    • 2018-09-11
    • 2018-07-17
    相关资源
    最近更新 更多