我需要计算每个日期变量的成对连续相关性(我的数据集中有 246 个):
Company 2009/08/21 2009/08/24 2009/08/25
A -0.0019531250 -0.0054602184 -6.274510e-03
AA -0.0063291139 -0.0266457680 -1.750199e-02
AAPL 0.0084023598 -0.0055294118 -1.770643e-04 ...
...
这样我就可以找到cor(col1,col2)、cor(col2,col3),但找不到cor(col1,col3)。我意识到,如果我想要所有组合,我可以使用 commn 函数,但我不知道如何在没有像 for 循环这样低效的情况下针对我的情况执行此操作。
最佳答案
方法 1 你可以这样做:
lapply(1:(ncol(dat)-1), function(i) cor(dat[, i], dat[, i+1],
use="pairwise.complete.obs"))
示例 包含 10 个变量的数据框将为您提供 9 个连续相关性,即第 1-2、2-3、3-4 列等(如果您想要的话)。
dat <- replicate(10, rnorm(10))
lapply(1:(ncol(dat)-1), function(i)
cor(dat[, i], dat[, i+1], use="pairwise.complete.obs"))
方法 2(非常简洁)
同时使用 iris 数据集:
dat <- iris[, 1:4]
diag(cor(dat, use="pairwise.complete.obs")[, -1])
[1] -0.1175698 -0.4284401 0.9628654
关于r - R 中的成对运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21170476/