Фильтр в столбце по дате в R - PullRequest
1 голос
/ 21 февраля 2020

У меня есть набор данных, df, столбец Дата состоит из дат с декабря по январь. Я хотел бы отфильтровать и создать новый набор данных с датами только с января.

     Date                         ID


     12/20/2019 1:00:01 AM        A
     12/30/2019 2:00:02 AM        B
     01/01/2020 1:00:00 AM        C
     02/05/2020 2:00:05 AM        D

Мне бы хотелось:

   Date                       ID

  01/01/2020 1:00:00 AM        C
  02/05/2020 2:00:05 AM        D

Могу ли я использовать dplyr с этим? или База R

    library(lubridate)
    library(tidyverse)

    filter(Date) >= 01-01-2020 ?

dput

  structure(list(Date = structure(c(2L, 3L, 1L, 4L), .Label = c("1/1/2020 1:00:00 AM", 
  "12/20/2019 1:00:01 AM", "12/30/2019 2:00:02 AM", "2/5/2020 2:00:05 AM"
  ), class = "factor"), ID = structure(1:4, .Label = c("A", "B", 
 "C", "D"), class = "factor")), class = "data.frame", row.names = c(NA, 
 -4L))

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Мы можем использовать subset с strptime в base R

subset(df1, strptime(Date, "%m/%d/%Y %I:%M:%S %p")$year + 1900 >=2020)
#                 Date ID
#3 1/1/2020 1:00:00 AM  C
#4 2/5/2020 2:00:05 AM  D
1 голос
/ 21 февраля 2020

Может быть, просто filter по году и выбрать дату с 2020 года?

library(dplyr)
library(lubridate)

df %>% mutate(Date = mdy_hms(Date)) %>% filter(year(Date) >= 2020)

#                 Date ID
#1 2020-01-01 01:00:00  C
#2 2020-02-05 02:00:05  D

Или использовать базовую R:

subset(transform(df, Date = as.POSIXct(Date, format = "%m/%d/%Y %I:%M:%S %p")), 
                 as.integer(format(Date, "%Y")) >= 2020)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...