R 滑动窗口:将系列与之前/之后的所有系列进行比较
我对滚动窗口相当陌生。我想计算一个函数来比较,比如说,数据中的一个窗口与相同大小之前/之后的所有窗口之间的相关性。假设没有间隙。我想使用一种简洁的方法,比如R 滑动窗口:将系列与之前/之后的所有系列进行比较,r,time-series,tidyverse,rolling-computation,tsibble,R,Time Series,Tidyverse,Rolling Computation,Tsibble,我对滚动窗口相当陌生。我想计算一个函数来比较,比如说,数据中的一个窗口与相同大小之前/之后的所有窗口之间的相关性。假设没有间隙。我想使用一种简洁的方法,比如tsibble和/或@Davis-Vaughan滑块 df删除前3行后,我们可以为每3行创建一个带有gl的分组索引,然后在前3行和每个“销售”块之间执行cor library(dplyr) n <- 3 df %>% slice(-seq_len(n)) %>% group_by(grp = as.int
tsibble
和/或@Davis-Vaughan滑块
df删除前3行后,我们可以为每3行创建一个带有gl
的分组索引,然后在前3行和每个“销售”块之间执行cor
library(dplyr)
n <- 3
df %>%
slice(-seq_len(n)) %>%
group_by(grp = as.integer(gl(n(), n, n()))) %>%
filter(n() == n) %>%
summarise(cor = cor(df$sales[seq_len(n)], sales))
库(dplyr)
n%
切片(-seq_len(n))%>%
分组依据(grp=as.integer(gl(n(),n,n())))%>%
过滤器(n()==n)%>%
总结(cor=cor(df$销售额[序号(n)],销售额))
-输出
# A tibble: 2 x 2
# grp cor
# <int> <dbl>
#1 1 0.961
#2 2 -0.655
#一个tible:2x2
#玻璃钢
#
#1 1 0.961
#2 2 -0.655
数据
df谢谢这是一个聪明而简单的方法!您将如何修改切片(-seq_len(n))
,以便更容易地指定一系列中的特定间隔(例如过滤器(介于(日期,as.date(“2019-08-30”)、as.date(“2019-09-01”))
@ThomasSpeidel如果您使用过滤器,则取反(!
)是的,谢谢。为了使它更易于管理,我过滤掉了感兴趣的时间间隔:pattern%filter(介于(date,as.date(“2014-06-05”)、as.date(“2014-06-23”))之间)df2%anti_-join(pattern,by=“date”)%%>%
你可以在一个单链中进行过滤df%>%filter(介于(date,as.date(“2014-06-05”)、as.date(“2014-06-23”))%%>%anti_join(df,by='date')
您共享的dput
代码无效。您能检查一下吗?
# A tibble: 2 x 2
# grp cor
# <int> <dbl>
#1 1 0.961
#2 2 -0.655
df <- data.frame(sales = c(2, 4, 6, 2, 8, 10, 9, 3, 5, 2),
index = seq(as.Date("2019-08-30"), length.out = 10, by = '1 day'))