[英]Rolling correlation with data.table
我正在尝试在两个data.table
列之间进行滚动关联。
dt <- data.table(a=-1:10,b=1:12)
> dt
a b
1: -1 1
2: 0 2
3: 1 3
4: 2 4
5: 3 5
6: 4 6
7: 5 7
8: 6 8
9: 7 9
10: 8 10
11: 9 11
12: 10 12
这是我在zoo
尝试使用rollapply
:
library(zoo)
dt[,rcor:=rollapplyr(as.list(a,b),width=5,
FUN=function(y) {return(cor(y[[1]],y[[2]]))},fill=NA)]
Error in zoo(data) : “x” : attempt to define invalid zoo object
与roll_cor
从roll
:
library(roll)
roll_cor(dt[,.(a,b)],5)
Error in roll_cor(dt[, .(a, b)], 5) :
Not compatible with requested type: [type=list; target=double].
试试这个:
corr <- function(y) cor(y[, 1], y[, 2])
dt[,rcor:=rollapplyr(.SD, 5, corr, by.column = FALSE, fill = NA)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.