我想从两个不同的数据帧计算两列的相关性。
例如:
数据框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的第三列(分数)和dataframe2的第三列(S1)。
dataframe1的第三列(分数)和dataframe2的第三列(S2)。
dataframe1的第三列(分数)和dataframe2的第三列(S3)。
dataframe1的第三列(分数)和dataframe2的第三列(S4)。
等等。
到目前为止,这是我写的:
for (i in 3:8)
{
cortop[i] <- cor(dataframe1$Score_top,dataframe2$i)
}
我是R的新手。请帮助编写一个循环。
最佳答案
您在这里不需要循环:
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"))