R 计算两个日期之间的平均值

R 计算两个日期之间的平均值,r,date,R,Date,我有两个数据帧。一个是偶然事件的列表。它有一个日期列和一列值 df1 = data.frame(date = c(as.Date('2020-01-01'), as.Date('2020-02-02'), as.Date('2020-03-01')), value = c(1,5,9)) 我有另一个数据帧,是每日记录。它也有一个日期列和一列值 set.seed(1) df2 = data.frame(date = seq.Date(from = as.Date

我有两个数据帧。一个是偶然事件的列表。它有一个日期列和一列值

df1 = data.frame(date = c(as.Date('2020-01-01'), as.Date('2020-02-02'), as.Date('2020-03-01')),
                 value = c(1,5,9))
我有另一个数据帧,是每日记录。它也有一个日期列和一列值

set.seed(1)
df2 = data.frame(date = seq.Date(from = as.Date('2020-01-01'), to = as.Date('2020-04-01'), by = 1),
                 value = rnorm(92))
我想在df1中创建一个新列,它是从当前行日期到后续日期值的df2$值的平均值(不包括第二个值,因此在本例中,第一个新值将是从第1行到第32行的df2值的平均值,其中第33行是与df1$date[2]匹配的行)。生成的数据帧如下所示:

        date value value_new
1 2020-01-01     1 0.1165512
2 2020-02-02     5 0.0974052
3 2020-03-01     9 0.1241778

但我不知道如何具体说明。此外,我更希望最后一个值是df1$date最后一个值之外的任何数据的平均值,但我也会接受NA。

我们可以使用
df1
来计算
df2
用以前的值填充
NA
值,并获得
值的
平均值

library(dplyr)

df2 %>% 
  rename(value_new = value) %>%
  left_join(df1, by = 'date') %>%
  tidyr::fill(value) %>%
  group_by(value) %>%
  summarise(date = first(date),
            value_new = mean(value_new))


# A tibble: 3 x 3
#   value date       value_new
#   <dbl> <date>       <dbl>
#1     1 2020-01-01    0.117 
#2     5 2020-02-02    0.0974
#3     9 2020-03-01    0.124 
库(dplyr)
df2%>%
重命名(值\新值=值)%>%
左联合(df1,by='date')%>%
tidyr::填充(值)%>%
分组依据(值)%>%
总结(日期=第一个(日期),
新值=平均值(新值))
#一个tibble:3x3
#值日期值\u新
#           
#1     1 2020-01-01    0.117 
#2     5 2020-02-02    0.0974
#3     9 2020-03-01    0.124