Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 仅查找从今天开始的过去3年中的数据点_R_Subset - Fatal编程技术网

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日离今天已经三年多了,我确实希望它被排除在外。我已经修改了这个问题来说明这一点。只要代码不是为了法律/监管要求,闰年额外的一天可能很重要