我有一个如下数据框:
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
由此我想过滤每天上午9点到上午10点之间的条目。我知道有一天我可以使用类似的东西:
results=filter(df,time>='2016-09-01 09:00:00' && time<='2016-09-01 10:00:00')
但要过滤掉每个月的每一天的结果。感谢任何帮助。
答案 0 :(得分:4)
您可以通过一些简单的格式化来实现它:
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
答案 1 :(得分:1)
我建议使用lubridate
包。
library(lubridate)
date1 <- as.POSIXct("2016-09-01 09:00:00") #lower bound
date2 <- as.POSIXct("2016-09-01 10:00:00") #upper bound
rng <- new_interval(date1, date2) #desired range
result <- df[df$time %within% rng,]
您可能需要检查time
变量的类并在使用上述内容之前应用一些更改:
df$time <- as.POSIXct(df$time)