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