如何计算 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')
我有一个 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')