Ошибка в вычислении стандартной ошибки: (список) объект не может быть приведен к типу 'double' - PullRequest
2 голосов
/ 03 февраля 2020

Я вычислил среднее значение наблюдений для каждого лечения, используя

Data %>% group_by(Treatment, Rep) %>% summarise(Mean = mean(Nitrogen, na.rm = TRUE)) 

. У меня есть одно значение для каждого лечения. Теперь я хочу вычислить стандартное отклонение и стандартную ошибку среднего. Для которого я использовал,

Data %>% group_by(Treatment, Rep) %>% summarise_each(funs = mean, sd, se=sd(.)/sqrt(n()), na.rm = TRUE) 

Но выдает ошибку. Я не уверен, в чем моя ошибка. Спасибо!

1 Ответ

2 голосов
/ 03 февраля 2020

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 (неясно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...