Вычисление средств для нескольких групп в R

#r #grouping #mean

#r #группировка #среднее

Вопрос:

Привет, товарищи переполнители,

в настоящее время я пытаюсь вычислить средства для нескольких групп. Мой df выглядит так (~ 600 строк):

  col1   col2  col3  col4  col5
   <type> <gender> <var1> <var2> <var3>
 1 A        1         3     2     3
 2 A        2         NA    5    NA
 3 A        1         3     3     5
 4 B        1         4     NA    1  
 5 B        2         3     4     5  

  

Теперь результат должен выглядеть так:

  col1   col2  col3  col4  col5
   <type> <gender> <mean-var1>  <mean-var2>   <mean-var3>
 1 A        1         3.6          4.1          4.6
 2 A        2         4.1          3.8          4.2
 3 B        1         3.9          4.2          3.7
 4 B        2         4.3          3.2          2.7
 5 C        1         3.5          4.5          3.6
 6 C        2         4            3.7          4.2
...
  

До сих пор я пытался использовать group_by функцию:

 avg_values<-data%>%
      group_by(type, gender) %>%
      summarize_all (mean())
  

До сих пор это не сработало. Не могли бы вы помочь мне найти хороший способ справиться с этим?

Комментарии:

1. Попробуйте удалить () in означает что-то вроде ..%>% summarize_all(mean) : этого должно быть достаточно .

2. Я только что заметил! удалил мой ответ

Ответ №1:

Работает ли это:

 library(dplyr)
df %>% group_by(type, gender) %>% summarise(across(var1:var3, ~ mean(., na.rm = T)))
`summarise()` regrouping output by 'type' (override with `.groups` argument)
# A tibble: 4 x 5
# Groups:   type [2]
  type  gender  var1  var2  var3
  <chr>  <dbl> <dbl> <dbl> <dbl>
1 A          1     3   2.5     4
2 A          2   NaN   5     NaN
3 B          1     4 NaN       1
4 B          2     3   4       5 
  

Используемые данные:

 df
# A tibble: 5 x 5
  type  gender  var1  var2  var3
  <chr>  <dbl> <dbl> <dbl> <dbl>
1 A          1     3     2     3
2 A          2    NA     5    NA
3 A          1     3     3     5
4 B          1     4    NA     1
5 B          2     3     4     5