按行划分2个数据帧之间的R相关性

scr*_*Owl 16 r plyr correlation dataframe

我有2个数据帧w/5列和每行100行.

id       price1      price2     price3     price4     price5
 1         11.22      25.33      66.47      53.76      77.42
 2         33.56      33.77      44.77      34.55      57.42
...
Run Code Online (Sandbox Code Playgroud)

我想基本上得到相应行的相关性

for(i in 1:100){    
cor(df1[i, 1:5], df2[i, 1:5])    
}
Run Code Online (Sandbox Code Playgroud)

但没有使用for循环.我假设有一些plyr用来做它但似乎无法做到正确.有什么建议?

Sim*_*nek 23

根据您是否需要酷或快速解决方案,您可以使用其中任何一种

diag(cor(t(df1), t(df2)))
Run Code Online (Sandbox Code Playgroud)

这很酷但很浪费(因为它实际上计算了你并不真正需要的所有行之间的相关性,因此它们将被丢弃)或

A <- as.matrix(df1)
B <- as.matrix(df2)
sapply(seq.int(dim(A)[1]), function(i) cor(A[i,], B[i,]))
Run Code Online (Sandbox Code Playgroud)

只做你想要的东西但是要输入更多.

  • +1第一个很酷.另外,`t(as.matrix(df1))`可以变为`t(df1)`等,因为当`t()`传递给data.frame时,对矩阵的强制是隐式发生的. (2认同)

Kam*_*ski 6

我发现这as.matrix不是必需的.

所有对dataframes之间的行的相关性df1df2:

sapply(1:nrow(df1), function(i) cor(df1[i,], df2[i,]))
Run Code Online (Sandbox Code Playgroud)

和列:

sapply(1:ncol(df1), function(i) cor(df1[,i], df2[,i]))
Run Code Online (Sandbox Code Playgroud)