あなたが探しているものの半分は次の場所にありuse = "pairwise.complete.obs"
ますcor
:
値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