如何从 R 中的数据框中提取特定时间范围

How can I extract a specific range of hours from a dataframe in R

我在 R 中有一个包含 2 列的数据框(date_time,温度)我想提取白天的所有温度(介于 5:59 上午到 18:00 下午).我首先用这段代码分隔日期和时间(小时):

Th$Hours <- format(as.POSIXct(Th$`date`,
"%Y-%m-%d %H:%M:%S", tz = ""),
format = "%H:%M")%>% as_tibble()

Th$Dates <- format(as.Date(Th$`date`,"%Y-%m-%d",
tz = ""), format = "%Y-%m-%d")%>% as_tibble()

然后我使用以下命令提取特定时间:

Th_day<- Th[Th$Hours >= " 06:00 AM" & Th$Hours<= "18:00 PM",]%>% as_tibble()

但我得到一个 tibble,它每天给出从 00:00 到 18:00 的行:

有什么问题?

不要把日期和时间分开。当您使用 format 获取时间时,您正在将其转换为 character class,它不知道如何与 ><.

相反,使用 hour 将小时分量提取为整数,并对其进行比较:

library(lubridate)
Th %>% 
  mutate(DateTime <- as.POSIXct(date, "%Y-%m-%d %H:%M:%S", tz = "")) %>%
  filter(hour(DateTime) >= 6 & hour(DateTime ) < 18)

我正在对您的数据结构做出一些假设 - 如果您需要比这更多的帮助,请编辑您的问题以按照评论者的要求与 dput() 分享一些样本数据。 dput(Th[1:5, ]) 应该足够了。

请注意,如果您只想对时间进行大量操作(忽略日期部分),您可以使用 chron 包中的 times class, see here for some more info.