Я большой сторонник переформатирования данных, чтобы они были в «длинном» формате. Полезность длинного формата особенно очевидна, когда дело доходит до таких проблем, как эта. К счастью, с помощью пакета reshape
достаточно легко преобразовать подобные данные практически в любой формат.
Если я правильно понял ваш вопрос, вам нужно среднее значение Memory
и Naive
для каждой строки. По какой-то причине нам нужно сделать имена столбцов уникальными для reshape::melt()
.
colnames(df) <- paste(colnames(df), 1:ncol(df), sep = "_")
Затем вам нужно будет создать столбец ID
. Вы могли бы либо сделать
df$ID <- 1:nrow(df)
или, если эти имена строк имеют смысл
df$ID <- rownames(df)
Теперь, с пакетом reshape
library(reshape)
df.m <- melt(df, id = "ID")
df.m <- cbind(df.m, colsplit(df.m$variable, split = "_", names = c("Measure", "N")))
df.agg <- cast(df.m, ID ~ Measure, fun = mean)
df.agg
теперь должно выглядеть как ваш желаемый фрагмент вывода.
Или, если вам нужны только общие средства по всем строкам, предложение Зака сработает. Что-то вроде
m <- colMeans(df)
tapply(m, colnames(df), mean)
Вы можете получить тот же результат, но отформатированный как фрейм данных с
cast(df.m, .~variable, fun = mean)