Фильтр на указанную c дату в указанном c столбце - PullRequest
2 голосов
/ 07 января 2020

У меня есть фрейм данных, df со столбцом DateTimeUT C.

                         ID              DateTimeUTC

                         A               12/4/2019 11:30:30 PM
                         A               12/4/2019 11:30:30 PM
                         B               12/5/2019 11:30:30 PM
                         B               12/5/2019 11:30:30 PM
                         B               12/5/2019 11:30:30 PM

Я бы хотел отфильтровать, чтобы DateTimeUT C отображал только даты от 5.12.2009 с таким результатом :

                           ID              DateTimeUTC


                         B               12/5/2019 11:30:30 PM
                         B               12/5/2019 11:30:30 PM
                         B               12/5/2019 11:30:30 PM

Я пробовал эту команду, но безуспешно:

                       library('dplyr')
                       library('lubridate')

                       data %>%  filter as.Date(DateTimeUTC == "2019-12-05")

Я хотел бы ВСЕ дни с 12/5/2019, включая время (часы, мин. и сек) Возможно ли это?

1 Ответ

3 голосов
/ 07 января 2020

Здесь DateTimeUT C находится в другом формате. Преобразуйте столбец в класс DateTime (кажется, что это формат месяц-день-год-час-минута-секунда) и удалите время с помощью as.Date, затем выполните сравнение (==)

library(dplyr)
library(lubridate)
data %>%
     filter(as.Date(mdy_hms(DateTimeUTC)) ==   "2019-12-05")
#  ID           DateTimeUTC
#1  B 12/5/2019 11:30:30 PM
#2  B 12/5/2019 11:30:30 PM
#3  B 12/5/2019 11:30:30 PM

В коде OP as.Date применяется к логическому вектору, который в любом случае будет FALSE, потому что он сравнивает исходный формат с другим форматом, и это приведет к сбою выполнения кода, т.е.

"12/4/2019 11:30:30 PM" == "2019-12-05"
#[1] FALSE

Обтекание as.Date в этом случае приведет к ошибке

as.Date("12/4/2019 11:30:30 PM" == "2019-12-05")

Ошибка в as.Date.default ("4/4/2019 11:30: 30 PM "==" 2019-12-05 "):
не знаю, как преобразовать '" 4/4/2019 11:30:30 PM "==" 2019-12-05 "в класс« Дата »

данные

data <- structure(list(ID = c("A", "A", "B", "B", "B"), 
   DateTimeUTC = c("12/4/2019 11:30:30 PM", 
"12/4/2019 11:30:30 PM", "12/5/2019 11:30:30 PM", "12/5/2019 11:30:30 PM", 
"12/5/2019 11:30:30 PM")), class = "data.frame", row.names = c(NA, 
-5L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...