Если вы хотите найти mean
для всех столбцов, когда repair == 1
, мы можем использовать summarize_all
из dplyr
library(dplyr)
dt %>%
filter(repair == 1) %>%
summarize_all(~mean(., na.rm = TRUE))
# rating repair model
#1 3.5 1 0.5
В базе R мы также можем использовать colMeans
colMeans(dt[dt$repair == 1,], na.rm = TRUE)
#rating repair model
# 3.5 1.0 0.5
EDIT
Как упоминалось в комментариях, если есть количество столбцов, которые нам нужно отфильтровать для 1, а затем взять среднее значение, мы можем сначала выбрать эти столбцы, используя индекс столбца или имя столбца. Например, давайте предположим, что мы хотим отфильтровать столбцы 2–3 здесь, тогда мы можем сделать
rep_names <- 2:3
colMeans(df[rowSums(df[rep_names] == 1) == length(rep_names), ])
#rating repair model
# 2 1 1
rep_names
может содержать номер столбца с именами столбцов, которые мы хотим проверить на 1.