【问题标题】:How can I subset a dataframe based on time of day in r?如何根据 r 中的时间对数据框进行子集化?
【发布时间】:2021-12-03 18:40:43
【问题描述】:

我有一个大型数据集,我想做的就是根据一天中的时间从这个数据集创建另一个数据集 - 所以所有介于(包括)时间 04:00 和 21:00 之间的行。日期列是 POSIXlt。数据集的一个小样本如下:

ID Street Date
1 Saints Road 2020-12-31 23:00:00
2 Saints Road 2021-01-01 03:00:00
3 Saints Road 2021-01-01 04:00:00
4 Saints Road 2021-07-06 22:00:00

是否有一种简单的方法来选择行以生成仅包含上述时间范围内的行的数据集(如下例所示)?

ID Street Date
2 Saints Road 2021-01-01 03:00:00
3 Saints Road 2021-06-01 04:00:00

提前致谢。

【问题讨论】:

  • 熊猫不是一个 Python 模块吗?或者您所说的 “我尝试使用 Pandas 是什么意思,这似乎是最简单的选择,但这与我的 R 版本不兼容” ??
  • 感谢您的评论。是的,这是我的理解,但我看到了另一种使用 Pandas for r. 的解决方案,但现在在我当前使用的 r 版本中已停止使用。我现在删除了这个参考,因为它可能会混淆问题并混淆问题。

标签: r time


【解决方案1】:

使用lubridate

 library(lubridate)
    df <- data.frame(ID = c(1,2,3,4),Street = c("Saints Road","Saints Road","Saints Road","Saints Road"),Date = c("2020-12-31 23:00:00","2021-01-01 03:00:00","2021-06-01 04:00:00","2021-07-06 22:00:00"))
    df$Date <- as.POSIXlt(df$Date)

df %>% 
  filter(hour(Date) >= 3 & hour(Date) <= 21)

输出:

 ID      Street                Date
1  2 Saints Road 2021-01-01 03:00:00
2  3 Saints Road 2021-06-01 04:00:00

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2013-08-15
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多