R中的数据帧(产品)相关性

时间:2013-05-16 07:34:26

标签: r dataframe correlation

我有2个数据帧,每个数据帧有150行和10列+列和行ID。我想将一个数据帧中的每一行与另一个数据帧中的每一行相关联(例如150x150相关)并绘制得到的22500值的分布。(然后我想从分布中计算p值等 - 但这是下一步)。

坦率地说,我不知道从哪里开始。我可以读取我的数据并查看如何关联矢量或匹配两个矩阵的切片等,但我无法处理我在这里尝试做的事情。

2 个答案:

答案 0 :(得分:2)

set.seed(42)
DF1 <- as.data.frame(matrix(rnorm(1500),150))
DF2 <- as.data.frame(matrix(runif(1500),150))

#transform to matrices for better performance
m1 <- as.matrix(DF1)
m2 <- as.matrix(DF2)

#use outer to get all combinations of row numbers and apply a function to them
#22500 combinations is small enough to fit into RAM
cors <- outer(seq_len(nrow(DF1)),seq_len(nrow(DF2)),
     #you need a vectorized function
     #Vectorize takes care of that, but is just a hidden loop (slow for huge row numbers)
     FUN=Vectorize(function(i,j) cor(m1[i,],m2[j,])))
hist(cors)

enter image description here

答案 1 :(得分:1)

您可以将cor与两个参数一起使用:

cor( t(m1), t(m2) )