计算来自不同数据帧的两列之间的R的相关性

时间:2014-06-13 08:46:38

标签: r

我想计算两个不同数据帧中两列的相关性。

例如:

数据框1:

identifier  description Score
qzqzgz  desc1   0.12
zzqzgq  desc2   8.98
zzqzgg  desc3   0.55
zzqzgc  desc4   3.66
zzqzgz  desc5   1.22
qqzgzz  desc6   -30.23
zqzgzq  desc6   7.88
zqzgzg  desc6   6.45
zqzgzc  desc6   2.33
zqzgzz  desc6   1.02

dataframe2:

    identifier  description S1  S2  S3  S4  S5     S6
    qzqzgz  desc1   9   3   4   6   7   4
    zzqzgq  desc2   5   3   6   2   3   6
    zzqzgg  desc3   9   9   12  12  14  13
    zzqzgc  desc4   6   4   8   6   6   6
    zzqzgz  desc5   10  5   5   5   5   11
    qqzgzz  desc6   11  12  17  12  11  17
    zqzgzq  desc6   8   2   1   4   4   3
    zqzgzg  desc6   2   4   9   9   5   10
    zqzgzc  desc6   7   5   8   5   7   3
    zqzgzz  desc6   11  5   7   9   9   12

我想计算之间的相关性: dataframe1(Score)的第3列和dataframe2的第3列(S1)。 dataframe1(Score)的第3列和dataframe2的第3列(S2)。 dataframe1(Score)的第3列和dataframe2的第3列(S3)。 dataframe1(Score)的第3列和dataframe2的第3列(S4)。 等等。

这是我到目前为止所写的:

    for (i in 3:8)
       {
         cortop[i] <- cor(dataframe1$Score_top,dataframe2$i)
          }

我是R的新手。请帮忙写一个循环。

1 个答案:

答案 0 :(得分:3)

这里不需要循环:

cor(dataframe1$Score, dataframe2[-c(1:2)])

#             S1         S2         S3        S4       S5         S6
# [1,] -0.555369 -0.8556331 -0.7682521 -0.629983 -0.57097 -0.6790326

顺便说一句:您的代码无效,因为您无法将$与变量一起使用。因此,您必须将dataframe2$i替换为dataframe2[[i]]才能访问 i -th列。


更新

由于dataframe2中的值是因子,因此您必须在使用cor之前将它们转换为数值:

cor(dataframe1$Score, "storage.mode<-"(as.matrix(dataframe2[-c(1:2)]), "numeric"))