我有两个列,其中缺少数据。
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等)获得的结果仍应反映出真相。