summarise_each
становится устаревшим, а funs
заменяется на list
library(dplyr)
Data %>%
group_by(Treatment) %>%
summarise_at(vars(-group_cols()), list(mean = ~mean(., na.rm = TRUE),
sd = ~sd(., na.rm = TRUE),
se=~ sd(., na.rm = TRUE)/sqrt(n())))
Если мы не уверены в типах столбцов, отметьте
str(Data)
и примените функции только в столбцах цифр c. Без особых изменений в предыдущем коде замените summarise_at
на summarise_if
для числовых c столбцов
Data %>%
group_by(Treatment, Rep) %>%
summarise_if(is.numeric, list(mean = ~mean(., na.rm = TRUE),
sd = ~sd(., na.rm = TRUE),
se=~ sd(., na.rm = TRUE)/sqrt(n())))
Если в некоторых столбцах есть class
factor
, и его необходимо использовать для mean/sd
, затем сначала преобразуйте эти столбцы / столбцы в numeric
с помощью as.numeric(as.character(Data[[yourcolumn]]))
. Его можно воспроизвести с помощью iris
data
data(iris)
iris %>%
group_by(Species) %>%
summarise_at(vars(-group_cols()), list(mean = ~mean(., na.rm = TRUE),
sd = ~sd(., na.rm = TRUE),
se=~ sd(., na.rm = TRUE)/sqrt(n())))
# A tibble: 3 x 13
# Species Sepal.Length_me… Sepal.Width_mean Petal.Length_me… Petal.Width_mean Sepal.Length_sd Sepal.Width_sd Petal.Length_sd
# <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 setosa 5.01 3.43 1.46 0.246 0.352 0.379 0.174
#2 versic… 5.94 2.77 4.26 1.33 0.516 0.314 0.470
#3 virgin… 6.59 2.97 5.55 2.03 0.636 0.322 0.552
# … with 5 more variables: Petal.Width_sd <dbl>, Sepal.Length_se <dbl>, Sepal.Width_se <dbl>, Petal.Length_se <dbl>,
# Petal.Width_se <dbl>
В сообщении ОП: некоторые функции имеют анонимную функцию, и na.rm = TRUE
, по-видимому, относится к mean
(неясно).