滚动与data.table的相关性

时间:2017-10-11 22:43:23

标签: r data.table zoo

我试图在两个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

以下是我rollapply使用zoo尝试的内容:

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的{​​{1}}:

roll

1 个答案:

答案 0 :(得分:4)

试试这个:

corr <- function(y) cor(y[, 1], y[, 2])
dt[,rcor:=rollapplyr(.SD, 5, corr, by.column = FALSE, fill = NA)]