我想计算两个不同数据帧中两列的相关性。
例如:
数据框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的新手。请帮忙写一个循环。
答案 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"))