【问题标题】:Filter out date less than 90 days old过滤掉少于 90 天的日期
【发布时间】:2021-12-22 14:26:17
【问题描述】:

我有一个包含超过 500k 行的日期框,我需要删除日期小于代码运行日期 90 天的所有行(系统日期/时间)

Name Date.
Tom 16/07/20
Dave 10/04/21

【问题讨论】:

  • 使用as.Date 转换为Date-class 对象,然后过滤就像数值比较一样简单。阅读as.Date 上的帮助文档(以及% 代码的strptime)、Sys.Datesubset。也许difftime
  • 非常感谢会做

标签: r date filter


【解决方案1】:
dat$Date. <- as.Date(dat$Date., format = "%d/%m/%y")
dat
#   Name      Date.
# 1  Tom 2020-07-16
# 2 Dave 2021-04-10
difftime(Sys.Date(), dat$Date., units = "days")
# Time differences in days
# [1] 481 213
subset(dat, difftime(Sys.Date(), Date., units = "days") > 300)
#   Name      Date.
# 1  Tom 2020-07-16

您的示例数据没有显示您的“90天”,所以我将其更改为“300天”以显示过滤效果。

其他方式:

dat[difftime(Sys.Date(), dat$Date., units = "days") > 300,]
#   Name      Date.
# 1  Tom 2020-07-16

library(dplyr)
dat %>%
  filter(difftime(Sys.Date(), Date., units = "days") > 300)
#   Name      Date.
# 1  Tom 2020-07-16

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2016-12-03
    • 2013-02-09
    • 2020-07-18
    相关资源
    最近更新 更多