我正在尝试解决R中的问题。我的数据看起来像这样:
df1 <-
Date Rainfall_Duration
6/14/2016 10
6/15/2016 20
6/17/2016 10
8/16/2016 30
8/19/2016 40
df2 <-
Date Removal.Rate
6/17/2016 64.7
6/30/2016 22.63
7/14/2016 18.18
8/19/2016 27.87
我想查看df1中df2的日期及其对应的Rainfall_Duration数据。例如,我想在df1中查找df2的第一个日期,在df1中查找该特定日期和之前7天的子集行。此外,例如:对于2016年6月30日(在df2中),df1中没有可用日期在7天范围内。因此,在这种情况下,我只想在df2中提取与之前的日期(2016年6月17日)相同的结果。同样的逻辑适用于2016年7月14日(df2) 输出应如下所示:
df3<-
Rate.Removal.Date Date Rainfall_Duration
6/17/2016 6/14/2016 10
6/17/2016 6/15/2016 20
6/17/2016 6/17/2016 10
6/30/2016 6/14/2016 10
6/30/2016 6/15/2016 20
6/30/2016 6/17/2016 10
7/14/2016 6/14/2016 10
7/14/2016 6/15/2016 20
7/14/2016 6/17/2016 10
8/19/2016 8/16/2016 30
8/19/2016 8/19/2016 40
我尝试了以下代码:
library(plyr)
library (dplyr)
df1$Date <- as.Date(df1$Date,format = "%m/%d/%Y")
df2$Date <- as.Date(df2$Date,format = "%m/%d/%Y")
df3 <- lapply(df2$Date, function(x){
filter(df1, between(Date, x-7, x))
})
names(df3) <- as.character(df2$Date)
bind_rows(df3, .id = "Rate.Removal.Date")
df3 <- ldply (df3, data.frame, .id = "Rate.Removal.Date")
使用此代码,我可以为7天范围的子集数据。但是当该范围内没有可用日期时无法做到。如果有人可以帮我解决这个问题或建议一个新代码,我将非常感激。提前谢谢。