如何计算 r 中数据框中每第 n 行的 2 个变量的相关性?

How to calculate the correlation of 2 variables for every nth rows in a data frame in r?

我有一个 200*1000 行和 6 列的数据框。我想计算每 200 行的 2 列 cor(df$y1, df$y2)) 之间的相关性,因此我得到 1000 个不同的相关值。 当我想计算每 200 行的总和时,我可以简单地使用

rowsum(df,rep(1:1000,each=200))

但是在 r 中没有像 rowcor 这样的命令,我可以等效地用于相关性。

我们可以使用分组方法

by(df[c('y1', 'y2')], as.integer(gl(nrow(df), 200, nrow(df))),
      FUN = function(x) cor(x$y1, x$y2))

或使用tidyverse

library(dplyr)
out <- df %>%
   group_by(grp = as.integer(gl(n(), 200, n()))) %>%
   summarise(Cor = cor(y1, y2))
> dim(out)
[1] 1000    2

数据

set.seed(24)
df <- as.data.frame(matrix(rnorm(200 *1000 * 6), ncol = 6))
names(df)[1:2] <- c('y1', 'y2')