我有两列缺少数据。
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
的所有观察值,以使列长度相同?
答案 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