我希望通过排列将R中给定data.frame中的每个变量关联起来。该示例的集合保持简单,它有4个变量:
X<-data.frame("A"=rnorm(1e3),"B"=rnorm(1e3),"C"=rcauchy(1e3),"D"=rcauchy(1e3))
所以我想要的是一个data.frame,包含每个相互之间的相关性。结果可能是包含以下列的data.frame:
A.B, A.C, ... B.C, B.D, ...
不应该重复,所以A.A或B.D和D.B(重复)之类的东西是不允许的。
是申请函吗?如何以R典型的方便风格完成?
由于
答案 0 :(得分:0)
这是一种方式:
X<-data.frame("A"=rnorm(1e3),"B"=rnorm(1e3),"C"=rcauchy(1e3),"D"=rcauchy(1e3))
m <- cor(X)
m[lower.tri(m, diag = TRUE)] <- NA
library(reshape2)
(df <- na.omit(melt(m)))
# Var1 Var2 value
# 5 A B 0.05247314
# 9 A C -0.04440715
# 10 B C 0.01905053
# 13 A D 0.01920278
# 14 B D -0.02102680
# 15 C D 0.02793279
transform(df, Var = paste(Var1, Var2, sep = "."), Var1 = NULL, Var2 = NULL)
# value Var
# 5 0.05247314 A.B
# 9 -0.04440715 A.C
# 10 0.01905053 B.C
# 13 0.01920278 A.D
# 14 -0.02102680 B.D
# 15 0.02793279 C.D