我试图将值集中在整个列的平均值附近。我需要为整个(大)数据帧执行此操作,因此首先我尝试了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或其他东西有关,但我并不完全理解它。
提前感谢您的帮助。
答案 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 。假设,如果有人遇到与我相同的问题,这段代码应该有效。