我对R很陌生,但是喜欢所有可用的帮助。我遇到的问题是,由于制作了许多视频和帮助站点,所以更新太多了,使得代码不再有效。
我有一个csv免疫百分比,我想找到每列数据的平均值。如果有一种方法可以将此值添加为数据的最后一行,那将是理想的,但不是必需的。我尝试了几种不同类型的均值函数,但仍然收到错误消息。
我尝试了以下代码。我的文件称为Measles1,列为Y,后跟年份。我输入了特定于行的错误代码,但想显示我尝试参考的内容。任何帮助将不胜感激。
> colMeans(Measles1$Y2017)
> colMeans(Measles1)
> mean(Measles1$Y2017)
> mean(Measles1$Y2017, na.rm = TRUE)
> colMeans(Measles1$Y2017, na.rm = TRUE)
> Means <- colMeans(as.numeric(as.character(Measles1)))
> results.mean <- mean(Measles1)
> results.mean <- mean(Measles1,na.rm = TRUE)
> mean(Measles1[2:39])
我确定我只是缺少一些非常简单的东西。谢谢您的帮助。
答案 0 :(得分:0)
如果您可以提供代表性的样品,它将为我们提供更好的主意。您需要确保所有列都是数字,以便立即计算其均值。一种检查方法是str(your_data_frame)
。
使用内置的mtcars
数据集:
# na.rm argument is optional depending on your data
mtcars[nrow(mtcars) + 1, ] <- colMeans(mtcars, na.rm = T)
@Ronak Shah的推荐也很有效:
mtcars <- rbind(mtcars, colMeans(mtcars, na.rm = T))
答案 1 :(得分:0)
此代码将为您提供选择总计或均值的选项
d1 <- data_frame(
name = c("jim", "john", "jim", "john"),
`2012` = c(57, 58, 47, 57),
`2013` = c(14, 3, 3, 90))
library(tidyverse)
d1 <-bind_rows(d1,
d1 %>%
group_by(name) %>%
summarise_all(funs(mean)) %>%
mutate(name = paste0(name, '_total')))