Есть ли способ, которым это можно улучшить или сделать проще?
means.by<-function(data,INDEX){
b<-by(data,INDEX,function(d)apply(d,2,mean))
return(structure(
t(matrix(unlist(b),nrow=length(b[[1]]))),
dimnames=list(names(b),col.names=names(b[[1]]))
))
}
Идея та же, что и в инструкции SAS MEANS BY. Функция 'means.by' принимает data.frame и индексирование переменной и вычисляет среднее значение по столбцам data.frame для каждого набора строк, соответствующих уникальным значениям INDEX, и возвращает новый фрейм данных с именами строк, уникальными значениями INDEX.
Я уверен, что есть должно быть лучший способ сделать это в R, но я ничего не мог придумать.