【发布时间】:2020-05-11 01:01:22
【问题描述】:
我有一个数据框,正在计算列之间的相关性以确定要删除的属性。我想创建一个表,其中行是我的数据框的属性,并且在每个属性旁边都有一个列表,这些列表与该属性具有 >= 0.65 或 use="complete.obs",一组使用use="pairwise.complete.obs")。
一个例子:
set.seed(1234)
n=8
df <- as.data.frame(matrix(runif(n^2,min=0,max=1),nrow=n,ncol=n))
colnames(df) <- LETTERS[1:ncol(df)]
df$A[3] <- NA
df$C[2] <- NA
df$E[7] <- NA
cor1 <- cor(df, use="pairwise.complete.obs")
cor2 <- cor(df, use="complete.obs")
在这里,你可以形成如下的相关个体矩阵
cor1[-0.65<cor1 & cor1<0.65] <- NA
cor2[-0.65<cor2 & cor2<0.65] <- NA
此时我想知道如何创建一个属性表,然后(对于每个属性)只有那些在 both 上述两个矩阵@987654325 中具有相关性的非 NA 值的表@ 和 cor2。所以例如在此示例中,所需的输出将是:
A: G
B: D, H
C: E
D: B, H
E: C
F:
G: A
H: B, D
请注意,例如 G 未针对 F 列出,或 F 未针对 G 列出,因为在 cor1 中,相关性为 -0.01899381,即使 cor2 中的相关性为 -0.9186308346。两个相关性必须高于 0.65 或低于 0.65 才能包含在列表中。
编辑:一种理想的方法可以解决我上面未能解决的问题——cor1 中的相关性可能 >0.65,cor2 中的相关性可能为 >0.65 并通过,这不太可能。我们宁愿只列出在两个矩阵上 >=0.65 或在两个矩阵上
【问题讨论】:
标签: r correlation