R 仅查找从今天开始的过去3年中的数据点
我有一个数据集,其中一列作为日期。我需要根据过去三年中的所有日期对数据集进行子集 因此,如果我今天运行脚本,它只需要保留距离今天不到三年的日期,如果我必须明天运行脚本,它将返回距离明天不到三年的日期 我的示例数据集如下所示:R 仅查找从今天开始的过去3年中的数据点,r,subset,R,Subset,我有一个数据集,其中一列作为日期。我需要根据过去三年中的所有日期对数据集进行子集 因此,如果我今天运行脚本,它只需要保留距离今天不到三年的日期,如果我必须明天运行脚本,它将返回距离明天不到三年的日期 我的示例数据集如下所示: df <- structure(list(TransactionDate = structure(c(1391472000, 1335225600, 1405641600, 1332460800, 1420156800, 1401321600, 1445299200
df <- structure(list(TransactionDate = structure(c(1391472000, 1335225600,
1405641600, 1332460800, 1420156800, 1401321600, 1445299200, 1305158400,
1305158400, 1367366400), tzone = "UTC", class = c("POSIXct",
"POSIXt"))), .Names = "TransactionDate", row.names = c(NA, -10L
), class = "data.frame")
TransactionDate
1 2014-02-04
2 2012-04-24
3 2014-07-18
4 2012-03-23
5 2015-01-02
6 2014-05-29
7 2015-10-20
8 2011-05-12
9 2011-05-12
10 2013-05-01
这就是我所尝试的
newDF <- as.data.frame(df[which((as.numeric(format(Sys.Date(), '%Y')) - (as.numeric(format(df$TransactionDate, '%Y')))) <= 3),])
这给了我:
df[which((as.numeric(format(Sys.Date(), "%Y")) - (as.numeric(format(df$TransactionDate, "%Y")))) <= 3), ]
1 2014-02-04
2 2014-07-18
3 2015-01-02
4 2014-05-29
5 2015-10-20
我预计的产出将从上述产出中排除2014-02-04的第一个条目,因为从今天算起已经三年多了,即使是从2014年算起。有人能帮我吗?只需要一个基本R:
library(dplyr)
library(lubridate)
newdf <- df %>%
filter(TransactionDate >= Sys.Date() - years(3))
R> recent <- subset(df, as.Date(TransactionDate) >= Sys.Date() - 1095)
R> head(recent)
TransactionDate
3 2014-07-18
5 2015-01-02
6 2014-05-29
7 2015-10-20
2012-04年呢-24@akrun,当我提到第一个条目时,我指的是来自代码输出的第一个条目。由于2012年4月24日离今天已经三年多了,我确实希望它被排除在外。我已经修改了这个问题来说明这一点。只要代码不是为了法律/监管要求,闰年额外的一天可能很重要