首页 > 解决方案 > 在R中按日期过滤列

问题描述

我有一个数据集 df,日期列包含 12 月和 1 月的日期。我想过滤并制作一个新数据集,其日期仅从一月开始。

     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 ?

输入是

  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))

标签: rdplyrtidyversestringr

解决方案


也许只是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)

推荐阅读