我正在尝试编写一些代码来轻松计算矩阵中所有连续列之间的相关性。
假设我有 A、B、C、D、E 列。
我想要成对相关 AB、BC、CD、DE。
为了避免写一个循环,我玩过sapply,但到目前为止不是很成功。
如有任何支持,我将不胜感激。
最佳答案
您可以利用 cor
自动计算所有列相关的事实:
cor(df)[cbind(2:ncol(df), 1:(ncol(df) - 1))]
# [1] -0.08727070 -0.10444715 0.06008165 0.18030921
比较:
cor(df$a, df$b)
# [1] -0.0872707
cor(df$b, df$c)
# [1] -0.1044471
在这里,我们计算完整的相关矩阵,然后子集得到超对角线(对角线从实际对角线向上移动一个),它对应于列 1 - 2、2 - 3 等的相关性。我们使用矩阵进行子集化,该矩阵由指定所有超对角坐标的 cbind
创建。
这是我生成数据的方式:
set.seed(123)
df <- as.data.frame(replicate(5, runif(100), s=F))
names(df) <- letters[1:ncol(df)]
关于R 连续列之间的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21676316/