使用不同的函数时得到不同的答案为相同的数学,不知道为什么
我想围绕整个列的平均值中心值。我需要为整个(大)数据框完成此操作,所以首先我尝试了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或什么有关,但我不太明白。
在此先感谢您的帮助。
经过很多尝试,这里是我有的代码。我仍然得到的平均值已关闭,但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个观察具有大量的NAs,我认为这影响了结果,因为我的N = 218 。假设,如果有人遇到与我一样的问题,此代码应该可以工作。
我无法重新创建您的错误。我下载了谷歌文档作为CSV文件,并得到了使用colmeans和mean的6.502439。 –
尝试在数据框上使用'complete.cases()',以便所有的NA都被删除。 'data sweetmusicality
我同意@IanWesley。问题不可重现; 6.502439是'Irritability'的平均值 –