Мы можем использовать sum
в логическом векторе, чтобы получить «количество» не-NA элементов, у mean
также есть аргумент na.rm = TRUE
для удаления этих элементов NA. Итак, нам не нужно na.omit()
. Хотя он удаляет NA
элементов, он также удаляет полную строку всякий раз, когда в этой строке есть только один NA
. В действительности, «количество» уменьшается для некоторых столбцов, а «среднее» также изменяется в зависимости от удаления строк со значениями, отличными от NA
df %>%
group_by(Gender) %>%
summarise_all(.funs = funs(count = sum(!is.na(.)),
mean = mean(., na.rm = TRUE)))
# A tibble: 3 x 7
# Gender Obs1_count Obs2_count Obs3_count Obs1_mean Obs2_mean Obs3_mean
# <fct> <int> <int> <int> <dbl> <dbl> <dbl>
#1 F 3 3 3 0.5 0.00667 -0.157
#2 M 4 3 3 0.875 2.19 0.47
#3 UNK 2 1 2 0.5 1.22 1.22