筛选R中某个时间范围之间的所有天数

Ric*_*cky 3 r filter dataframe dplyr

我有一个如下数据框:

entry_no      id            time
_________     ___           _____
1              1        2016-09-01 09:30:09
2              2        2016-09-02 10:36:18
3              1        2016-09-01 12:27:27
4              3        2016-09-03 10:24:30
5              1        2016-09-01 12:35:39
6              3        2016-09-06 10:19:45
Run Code Online (Sandbox Code Playgroud)

从中我想过滤每天上午9点至上午10点之间发生的条目。我知道有一天我可以使用类似以下内容的条目:

results=filter(df,time>='2016-09-01 09:00:00' && time<='2016-09-01 10:00:00') 
Run Code Online (Sandbox Code Playgroud)

但要过滤出每月的每一天的结果。不胜感激。

M--*_*M-- 6

我建议使用lubridate包。

library(lubridate)

date.range <- interval(as.POSIXct("2016-09-01 09:00:00"), #lower bound
                       as.POSIXct("2016-09-01 10:00:00")  #upper bound
                       ) 

filtered.results <- df[df$time %within% date.range,]
Run Code Online (Sandbox Code Playgroud)

time在获取结果之前,您可能需要检查变量的类并应用一些更改:

df$time <- as.POSIXct(df$time)
Run Code Online (Sandbox Code Playgroud)

  • 答案适用于“lubridate::interval()”,根据 lubridate 1.7.9.9000 (2认同)

the*_*ail 5

您可以通过一些简单的格式来实现它:

dat$hms <- format(as.POSIXct(dat$time), "%H:%M:%S")
dat[dat$hms >= "09:00:00" & dat$hms <= "10:00:00",]

#  entry_no id                time      hms
#1        1  1 2016-09-01 09:30:09 09:30:09
Run Code Online (Sandbox Code Playgroud)