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

  • 本文关键字:子集 两个 排除 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的观察值,以便列的长度相同?

可以使用use参数处理丢失值。参考?cor

使用可选的字符串,提供一种计算方法 在缺少价值观的情况下协方差。这一定是(一个 缩写)"所有事物"," all.Obs"的弦乐之一, "完整"," na.or.complete"或" pairwise.complete.obs"。

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

数据:

df1 <- structure(list(Var1 = c(1445L, 656L, NA, 607L, 2098L), 
                      ar2 = c(40L, NA, NA, NA, 15L)), 
                 .Names = c("Var1", "Var2"),
                 row.names = c(NA, -5L), class = "data.frame")

如果您可以用均值替换每个变量的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等)获得的结果仍应反映出真相。

最新更新