我的数据具有以下结构:
data.frame(value = c(1, 2, 10), date = as.Date(c('2018-01-01', '2018-01-02', '2018-01-04')))
,我想使用最近两天的窗口来计算每行值的滚动最小值。也就是说,此计算的输出应为
data.frame(value = c(1, 2, 10), date = as.Date(c('2018-01-01', '2018-01-02', '2018-01-04')),
minimum = c(1, 1, 10))
是否有使用tidyverse进行此操作的简单方法?
答案 0 :(得分:1)
可以去:
library(dplyr)
df %>%
mutate(
minimum = sapply(date, function(x) min(value[between(date, x - 1, x)]))
)
输出:
value date minimum
1 1 2018-01-01 1
2 2 2018-01-02 1
3 10 2018-01-04 10