I have a dateframe with over 500k rows I need to remove all the rows that the date is less than 90 days from the date the code is run( system date/time)
Name | Date. |
---|---|
Tom | 16/07/20 |
Dave | 10/04/21 |
CodePudding user response:
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
Your sample data doesn't demonstrate your "90 days", so I changed it to "300 days" to show the filtering effect.
Other ways:
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