看起来像这样的帧:
Col1 Col2 Col3
0 3 25
45 0 0
0 0 12
只有当两个元素为!=时,我才想计算元素之间的相关性指数从0开始,因为在我的情况下,0是"非信息项",因此计算信息性的3和非信息性的0之间的相关性是没有意义的。
我不能简单地删除包含0个元素的列,因为0个元素在我的数据帧中是稀疏的。
您要查找的一半是cor
:中的use = "pairwise.complete.obs"
如果
use
的值为"pairwise.complete.obs",则相关性或每对变量之间的协方差是使用对这些变量进行完整的成对观测。
然而,它需要NA
值而不是零,所以让我们先转换数据:
data <- data.frame(x = c(1, 0, -1, 0, 1),
y = c(-1, 0, 1, -1, 0),
z = c(0, 0, 1, -1, -1))
data
# x y z
# 1 1 -1 0
# 2 0 0 0
# 3 -1 1 1
# 4 0 -1 -1
# 5 1 0 -1
tempData <- data
tempData[tempData == 0] <- NA
tempData
# x y z
# 1 1 -1 NA
# 2 NA NA NA
# 3 -1 1 1
# 4 NA -1 -1
# 5 1 NA -1
最后:
cor(tempData, use = "pairwise.complete.obs")
# x y z
# x 1 -1 -1
# y -1 1 1
# z -1 1 1