Здесь mean
принимает только первый аргумент, т. Е. Q1, как 'x', потому что значение ?mean
равно
означает (x, trim = 0, na.rm = ЛОЖЬ, ...)
т.е. второй и третий аргументы различны. В коде OP x будет приниматься как «Q1», trim
как «Q2» и т. Д. ...
в конце также означает, что пользователь может указать n
количество параметров без каких-либо ошибок и приводит к путанице, подобной этой (если мы не проверяем использование)
Мы можем указать данные как .
, задать интересующие столбцы и использовать их в rowMeans
df %>%
summarise(new_avg = rowMeans(.[-1]))
Это было бы более эффективно. Но, если мы хотим использовать mean
как таковой, то выполните rowwise
df %>%
rowwise() %>%
summarise(new_avg = mean(c(Q1, Q2, Q3)))
# A tibble: 1 x 1
# new_avg
# <dbl>
#1 5.92
Или конвертируйте в «длинный» формат, а затем выполните group_by
'ID' и получите mean
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -ID) %>%
group_by(ID) %>% # can skip this step if there is only a single row
summarise(new_avg = mean(value))
# A tibble: 1 x 2
# ID new_avg
# <dbl> <dbl>
#1 1101372 5.92