Удалить все строки с датами, содержащими определенный час:минута

У меня есть фрейм данных со столбцом, содержащим даты в формате %d/%m/%Y %H:%M, и я хотел бы удалить все строки с датами, содержащими время 12:00, независимо от месяца, дня и года. Для кадра данных с именем df со столбцом даты с именем date я попытался запустить следующий код, но он не сработал:

df <- df %>% filter(!grepl("12:00", date))

Любая идея о том, как я могу это сделать?


person MaddieS    schedule 22.08.2017    source источник


Ответы (1)


Просто для большей ясности в приведенном ниже примере я вставил tstamp как строку символов, а затем проанализировал ее. (Эти данные на самом деле представляют собой минуты на таймере для броска, но мы можем проигнорировать это для этого примера и представить, что это часы и минуты).

Затем вы используете hour(...) == 12 для извлечения и фильтрации по часам и minute(...) == 0 для извлечения и фильтрации по минутам.


library(dplyr)
library(lubridate)

lakers %>%   
  select(date, time, opponent, team, player) %>% 
  mutate(tstamp = paste(date, time),
         tstamp.parsed = ymd_hm(tstamp)) %>% 
  filter(hour(tstamp.parsed) == 12, minute(tstamp.parsed) == 0) %>% 
  head
# A tibble: 6 x 7
      date  time opponent  team player         tstamp       tstamp.parsed
     <int> <chr>    <chr> <chr>  <chr>          <chr>              <dttm>
1 20081028 12:00      POR   OFF        20081028 12:00 2008-10-28 12:00:00
2 20081029 12:00      LAC   OFF        20081029 12:00 2008-10-29 12:00:00
3 20081101 12:00      DEN   OFF        20081101 12:00 2008-11-01 12:00:00
4 20081105 12:00      LAC   OFF        20081105 12:00 2008-11-05 12:00:00
5 20081109 12:00      HOU   OFF        20081109 12:00 2008-11-09 12:00:00
6 20081111 12:00      DAL   OFF        20081111 12:00 2008-11-11 12:00:00
person Brian    schedule 22.08.2017