#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