2013-07-16 99 views
1

框架,看起來像這樣:相關計算

Col1  Col2 Col3  
0  3  25  
45  0  0 
0  0  12 

我想計算元素之間的相關係數只有在兩個元素是= 0,因爲在我的情況下,0是「沒有信息! item「,所以計算一個 之間的相關性是沒有意義的,例如,提供信息的是3,而不是信息性的。 我不能刪除包含0個元素的列,因爲0個元素在我的data.frame中是稀疏的。

任何人都可以幫助我嗎?

回答

3

的您正在尋找的是什麼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