我有一个相关矩阵,我需要提取最高值并删除反向重复项(sw6&sw4 = 0.6相关意味着与sw4&sw6 = 0.6相同)。
我使用了here的答案,该答案使用整形来输出高于0.5的最高相关性。现在我唯一的问题是有反向重复项。 This的问题在这里几乎是我想要的,即删除这些反向重复项,但是仅使用apply
,我担心这可能会减慢大集合的代码速度。没有它,有没有办法消除反向骗子?
还是有一种更好的方法来获得矩阵的最高相关性,而只产生唯一的组合?
重塑融化后的输出如下:
X1 X2 value
sw6 sw4 0.6299408
sw4 sw6 0.6299408
ss sl 0.5833333
sl ss 0.5833333
id ty 0.5724780
ty id 0.5724780
sl br 0.5333965
br sl 0.5333965
但是每两行相同。
答案 0 :(得分:1)
一个选择是将upper.tri
或lower.tri
替换为NA
,然后替换melt
。这具有预处理的优势,而不必进行后处理。对于大型数据集,最好进行预处理,而不是转换为长数据集,然后删除重复项
library(reshape2)
m1[lower.tri(m1, diag = TRUE)] <- NA
melt(m1, na.rm = TRUE)
注意:另外,除了OP已经在使用的软件包之外,不需要任何其他软件包