r - 将相关矩阵转换为包含每行列对记录的数据帧

标签 r matrix correlation

我有一个很大的相关矩阵(1093 x 1093)。我正在尝试将我的矩阵放入一个数据框中,该数据框中的每一行和列对都有一列,因此它将 (1093)^2 条记录。

这是我的矩阵的片段

            60516        45264        02117
60516  1.00000000 -0.370793012 -0.082897941
45264 -0.37079301  1.000000000  0.005145601
02117 -0.08289794  0.005145601  1.000000000

这里的目标是拥有一个如下所示的数据框:
row column correlation
60516 60516 1.000000000
60516 45264 -0.370793012

........ 等等。

有人有任何提示吗?如果我能澄清任何事情,请告诉我

谢谢,

最佳答案

对于矩阵 m ,您可以执行以下操作:

data.frame(row=rownames(m)[row(m)], col=colnames(m)[col(m)], corr=c(m))

#     row   col         corr
# 1 60516 60516  1.000000000
# 2 45264 60516 -0.370793010
# 3 02117 60516 -0.082897940
# 4 60516 45264 -0.370793012
# 5 45264 45264  1.000000000
# 6 02117 45264  0.005145601
# 7 60516 02117 -0.082897941
# 8 45264 02117  0.005145601
# 9 02117 02117  1.000000000

但是,如果您的矩阵是对称的,并且您对对角线不感兴趣,那么您可以将其简化为:
data.frame(row=rownames(m)[row(m)[upper.tri(m)]], 
           col=colnames(m)[col(m)[upper.tri(m)]], 
           corr=m[upper.tri(m)])

#     row   col         corr
# 1 60516 45264 -0.370793012
# 2 60516 02117 -0.082897941
# 3 45264 02117  0.005145601

关于r - 将相关矩阵转换为包含每行列对记录的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035001/

相关文章:

r - 更改 R 中饼图中切片的顺序

r - 从基于状态的序列创建基于转换的序列

R 函数将数字 (23) 转换为英文 ("twenty-three")

java - 如何使 Java 中的点积方法更快或更高效?

r - 组合(绑定(bind)列)两个具有不同类的对象

r - 计算为分类变量调整的偏相关

python - 从 Pandas 的大相关矩阵中列出最高相关对?

r - 在 r 中将列表列表合并为一个列表

java - 动态规划 - 获取网格中从起点到终点的路径数

r - R 中的偏相关