Можно указать gather
данные в формате 'long', сгруппированные по столбцам 'key', 'val', получить mean
из 'A'
library(tidyverse)
gather(data, key, val, B:D) %>%
group_by(key, val) %>%
summarise(A = mean(A))
Или в base R
, путем unlist
перевода столбцов из «B» в «D» и использования группирующего столбца в качестве «A» с реплицированными именами столбцов
aggregate(A ~ ., cbind(data['A'], cN = names(data)[-1][col(data[-1])],
group = unlist(data[-1])), mean)
data
set.seed(24)
data <- data.frame(A = round(runif(20,min = 0,max = 10),0),
B = round(runif(20,min = 0,max = 1),0),
C = round(runif(20,min = 0,max = 1),0),
D = round(runif(20,min = 0,max = 1),0))