【发布时间】:2021-05-12 17:36:23
【问题描述】:
我有一个相关矩阵,并使用它来确定变量与其他变量完全相关的位置,知道相关 = 1 是完全匹配的。为了更好地解释,这里是一些模拟数据,用于创建一些值相同的变量。
set.seed(123)
df <- data.frame(replicate(11,sample(1:1000,10,rep=TRUE)))
df <- cbind(df,df[,1:3],df[,1] )
names(df) <- c(paste0("X", 1:15))
cor_matrix <- round(cor(df, use="complete.obs", method="pearson"),2)
cor_matrix
> cor_matrix
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15
X1 1.00 0.08 -0.69 0.10 -0.35 -0.39 0.26 -0.17 0.06 -0.03 0.12 1.00 0.08 -0.69 1.00
X2 0.08 1.00 -0.11 0.15 -0.30 -0.41 0.05 0.09 -0.70 0.67 -0.10 0.08 1.00 -0.11 0.08
X3 -0.69 -0.11 1.00 -0.18 -0.05 0.29 -0.42 -0.10 -0.01 -0.12 0.03 -0.69 -0.11 1.00 -0.69
X4 0.10 0.15 -0.18 1.00 0.24 0.37 0.31 0.18 0.03 -0.09 0.28 0.10 0.15 -0.18 0.10
X5 -0.35 -0.30 -0.05 0.24 1.00 0.33 0.36 0.27 0.34 -0.08 -0.21 -0.35 -0.30 -0.05 -0.35
X6 -0.39 -0.41 0.29 0.37 0.33 1.00 -0.55 0.11 0.55 -0.78 0.15 -0.39 -0.41 0.29 -0.39
X7 0.26 0.05 -0.42 0.31 0.36 -0.55 1.00 0.01 -0.25 0.54 0.10 0.26 0.05 -0.42 0.26
X8 -0.17 0.09 -0.10 0.18 0.27 0.11 0.01 1.00 0.06 0.02 -0.47 -0.17 0.09 -0.10 -0.17
X9 0.06 -0.70 -0.01 0.03 0.34 0.55 -0.25 0.06 1.00 -0.82 -0.26 0.06 -0.70 -0.01 0.06
X10 -0.03 0.67 -0.12 -0.09 -0.08 -0.78 0.54 0.02 -0.82 1.00 -0.17 -0.03 0.67 -0.12 -0.03
X11 0.12 -0.10 0.03 0.28 -0.21 0.15 0.10 -0.47 -0.26 -0.17 1.00 0.12 -0.10 0.03 0.12
X12 1.00 0.08 -0.69 0.10 -0.35 -0.39 0.26 -0.17 0.06 -0.03 0.12 1.00 0.08 -0.69 1.00
X13 0.08 1.00 -0.11 0.15 -0.30 -0.41 0.05 0.09 -0.70 0.67 -0.10 0.08 1.00 -0.11 0.08
X14 -0.69 -0.11 1.00 -0.18 -0.05 0.29 -0.42 -0.10 -0.01 -0.12 0.03 -0.69 -0.11 1.00 -0.69
X15 1.00 0.08 -0.69 0.10 -0.35 -0.39 0.26 -0.17 0.06 -0.03 0.12 1.00 0.08 -0.69 1.00
如您所见,X1 与 X12 和 X15 的相关值为 1。 X2 和 X13、X3 和 X14。 我想要做的是删除矩阵中所有不是 1 的值(用零替换不需要的值),但需要删除对角线上的 1,它与自身直接相关。任何帮助或想法将不胜感激。非常感谢
【问题讨论】:
-
在
diag(cor_matrix) <- 0之后,您可以使用which(cor_matrix==1, arr.ind=TRUE)定位1,这比将其余值分配给0并查看矩阵更方便。
标签: r