r — Отфильтруйте строки по дате, которая меняется каждый день

#r #filter

Вопрос:

Набор данных представляет собой 1 столбец с тысячами строк, содержащих дату «2021-09-23T06:38:53.458 Z».

С помощью следующего кода я могу подмножествовать строки со вчерашнего дня:

 rows_from_yesterday <- df[df$timestamp %like% "2021-09-24", ] 
 

Это работает как заклинание! Теперь я хотел бы автоматизировать этот процесс, потому что я не могу обновлять критерии соответствия каждый день. Как бы к этому подойти? Есть какие-нибудь советы или предложения?

Просто для ясности. Я хотел бы, чтобы «2021-09-24» автоматически обновлялось до «2021-09-25», когда это произойдет завтра. Я попробовал следующее:

 rows_from_yesterday <- df[df$timestamp %like% as.character(Sys.Date()-1), ] 
 

К сожалению, это не увенчалось успехом.

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

1. df[df$timestamp %like% as.character(Sys.Date()-1), ] работает для меня, используя набор данных в ответе ниже.

Ответ №1:

Если я правильно понял, вы хотите отфильтровать вчерашние наблюдения, верно? Если да, то вот решение:

 library(dplyr)
library(lubridate)

x <- "2021-09-23T06:38:53.458Z"

df <- tibble(timestamp = x)

df %>% 
  mutate(timestamp = ymd_hms(timestamp)) %>% 
  #filter dates equals to yesterday
  filter(as_date(timestamp) == (today()-days(1)))