Как я могу подмножествовать фрейм данных в зависимости от времени суток в r?

#r #time

Вопрос:

У меня есть большой набор данных, и все, что я хочу сделать, это создать еще один набор данных из него в зависимости от времени суток — так что все строки находятся между (и включая) временем 04:00 и 21:00. Столбец Даты-POSIXlt. Небольшая выборка набора данных выглядит следующим образом:

ID Улица Дата
1 Святая дорога 2020-12-31 23:00:00
2 Святая дорога 2021-01-01 03:00:00
3 Святая дорога 2021-01-01 04:00:00
4 Святая дорога 2021-07-06 22:00:00

Существует ли простой способ выбрать строки для создания набора данных, который включает только строки в пределах вышеупомянутого временного диапазона (как в следующем примере)?

ID Улица Дата
2 Святая дорога 2021-01-01 03:00:00
3 Святая дорога 2021-06-01 04:00:00

Заранее спасибо.

Комментарии:

1. Разве панды не являются модулем Python ? Или что вы подразумеваете под «Я пытался с Пандами, которые казались самым простым вариантом, но это было несовместимо с моей версией R» ??

2. Спасибо за ваш комментарий. Да, это мое понимание, но я видел другое решение, в котором использовались Панды для r., но теперь оно прекращено в версии r, которую я в настоящее время использую. Я удалил эту ссылку сейчас, так как это может запутать вопросы и запутать вопрос.

Ответ №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 amp; 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