找到排除两列缺失值的观察子集

时间:2017-02-20 07:02:42

标签: r

我有两列缺少数据。

Var1    Var2
1445    40
656     NA
NA      NA
607     NA
2098    15

我想计算这些列之间的相关性,同时排除缺少数据的观察结果。我试过了

 cor(na.omit(df$Var1),na.omit(df$Var2),method="pearson")

但是我得到了

  

cor中的错误(na.omit(df $ Var1),na.omit(df $ Var2),:     不兼容的尺寸

我认为这是因为我得到

而不是取两个变量的交集
Var1(NA omit)   Var2(NA omit)
1445            40
656             15  
607     
2098

所以不能运行相关因为它会改变列的长度。

如何省略包含NA的所有观察值,以使列长度相同?

2 个答案:

答案 0 :(得分:1)

如果你可以用平均值替换每个变量的NA值,那么这是一种方法:

var1[is.na(var1)] <- mean(var1, na.rm=TRUE)
var2[is.na(var2)] <- mean(var2, na.rm=TRUE)
cor(var1, var2, method="pearson")

如果缺失值的百分比很小,那么你得到的相关系数(Pearson,Spearman等)的结果应该仍然反映真相。

答案 1 :(得分:1)

可以使用Debug.Log参数处理缺少的值。请参阅use

  

使用可选的字符串给出计算方法   存在缺失值时的协方差。这必须是(an   缩写词)其中一个字符串“everything”,“all.obs”,   “complete.obs”,“na.or.complete”或“pairwise.complete.obs”。

?cor

数据:

cor(df1, use = "complete.obs")
#      Var1 Var2
# Var1    1   -1
# Var2   -1    1