Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 滑动窗口:将系列与之前/之后的所有系列进行比较_R_Time Series_Tidyverse_Rolling Computation_Tsibble - Fatal编程技术网

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'))