根据R中的日期子行设置行

时间:2017-01-30 02:11:47

标签: r date dplyr

我正在尝试解决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天范围的子集数据。但是当该范围内没有可用日期时无法做到。如果有人可以帮我解决这个问题或建议一个新代码,我将非常感激。提前谢谢。

0 个答案:

没有答案