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)
只做你想要的东西但是要输入更多.
我发现这as.matrix不是必需的.
所有对dataframes之间的行的相关性df1和df2:
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)