Возьмите среднее значение столбцов в csv и создайте новую строку с информацией
Я довольно новичок в 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])
Я уверен, что мне просто не хватает чего-то очень простого. Спасибо за помощь.
2 ответа
Было бы лучше, если бы вы могли предоставить репрезентативную выборку. Вы должны убедиться, что все столбцы являются числовыми, чтобы сразу вычислить их значения. Один из способов проверить это будет 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))
Этот код предоставит вам возможность найти общий итог или среднее значение по столбцу
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')))