【问题标题】:compute correlation in R between two columns from different data frame计算来自不同数据帧的两列之间的 R 相关性
【发布时间】:2014-08-03 18:30:40
【问题描述】:

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

例如:

数据框 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

数据框2:

    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 的第 3 列(分数)和 dataframe2 的第 3 列(S1)。 dataframe1 的第 3 列(分数)和 dataframe2 的第 3 列(S2)。 dataframe1 的第 3 列(分数)和 dataframe2 的第 3 列(S3)。 dataframe1 的第 3 列(分数)和 dataframe2 的第 3 列(S4)。 等等。

这是我目前所写的:

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

我是 R 的新手。请帮助为此编写一个循环。

【问题讨论】:

    标签: r


    【解决方案1】:

    这里不需要循环:

    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 列。


    更新:

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

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

    【讨论】:

    • cor(dataframe1$Score, dataframe2[-c(1:2)]) 中的错误:'y' 必须是数字
    • @biobudhan sapply(dataframe2[-c(1:2)], class) 的结果是什么?
    • 1 2 3 4 5 6 "因素" "因素" "因素" "因素" "因素" "因素"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    相关资源
    最近更新 更多