在使用不同功能时获得相同数学的不同答案,不知道为什么

时间:2017-06-22 18:15:50

标签: r

我试图将值集中在整个列的平均值附近。我需要为整个(大)数据帧执行此操作,因此首先我尝试了colMeans。

colMeans(data, na.rm = TRUE)

从这里,我得到了5.567的答案,我的数据集的第一列。但是,我想仔细检查一下。当我使用平均功能 mean(data$first_column, na.rm = TRUE)我得到了8.466。当我在excel表中计算平均值时,我得到了大约6.5的东西。

我还没能用生成的数据集重新创建这个问题,所以这里有一个 link to a GoogleDoc with the first two columns of my data set

最终目标是将值集中在数据集中几乎每列的均值周围,我假设我会用lapply()来做。但在我这样做之前,我想了解为什么我会得到这么多不同的平均值。我认为它与NAs或其他东西有关,但我并不完全理解它。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

经过大量的尝试,这是我的代码。我仍然得到关闭的平均值,但colMeans()mean()都产生相同的答案,所以我认为它与我所拥有的变量NA而不是函数有关。我还在研究这个问题,但是我想出了如何用平均值替换NAs,同时将其他值集中在均值上。 This post helped me figure it out, specifically @Itsa's code

###center values first

center_asd_prep <- autgi %>% select(ID, Irritability, Other_Variables)

as.numeric(center_asd_prep$srs_tot_raw ) -> center_asd_prep$srs_tot_raw

center_asd_mean <- center_asd_prep %>% select(-ID, -Group.y) #remove categorical info

#replacing NA with mean while centering other values around the mean center_asd_mean[] <- lapply(center_asd_mean, function(x) ifelse(is.na(x), mean(x, na.rm = TRUE), x))

#adding ID info back center_asd <- data.frame(center_asd_mean, ID = center_asd_prep$ID, Group = center_asd_prep$Group.y) center_asd

如果我弄清楚为什么我会得到如此高的平均值,我会更新这篇文章,但我有14个观察结果有很多的NA,我认为这会影响结果,因为我的N = 218 。假设,如果有人遇到与我相同的问题,这段代码应该有效。