complete.cases()和data [is.na(data)]< - 0的结果如何不同?

时间:2015-10-03 00:06:48

标签: r

我有一个数据框data,经过多次计算后,最终的数据框df.final中有一些缺失值。

在继续进行df.final的进一步计算之前,我最好将所有缺失值设为零

data[id.na(data)] <- 0

如此处所述  How do I replace NA values with zeros in R?,或者会做

df.final <- df.final[complete.cases(df.final), ] # considering only one's without na 

更有益吗?

两者有何不同?

1 个答案:

答案 0 :(得分:2)

如果将NA设置为零,那么对计算的影响就好像您测量它并且为零。因此,如果您在7月份测量温度,您将获得结果,好像您在那里度过了几个寒冷的日子。你的平均温度会更低。

如果您设置na.rm=T或使用complete.cases,效果就好像测量从未发生过(实际情况就是如此)。因此,我们7月份的平均温度仅为我们衡量的天数的平均值。

如果您只有一些孤立的NA值(sum(is.na())),那么您可能希望将它们全部设置为0(或其他一些合理的值,在此示例中<7月的平均温度可能会很好。)

如果只有极少数(因此我并不关心它会使我的测量结果偏差)或者零是一个合理的值(例如,如果我们想要几个月的工作经验,我只会设置为零,{{1可能意味着“没有经验”)。

软件很软:如果您的数据集足够小,您可以尝试两者并观察它对您的数据的影响程度。