
Partindo do data.frame que você forneceu no seu CMR. Alias, parábens por enviá-lo e ilustrar tão bem suas necessidades. Segue minha primeira abordagem para solucionar o problema. df <- data.frame(c1, c2, c3, var, peso) str(df) ## Lista de fórmulas. f <- c( var~c1, var~c2, var~c3, var~c1+c2, var~c1+c3, var~c2+c3, var~c1+c2+c3) aggregate(f[[1]], data=df, FUN=mean) L <- lapply(f, function(fi){ a <- aggregate(fi, data=df, FUN=mean) b <- aggregate(fi, data=df, FUN=length) m <- merge(a, b, by=names(a)[-ncol(a)]) names(m)[ncol(m)-1:0] <- c("mean", "length") return(m) }) str(L) require(plyr) M <- do.call(rbind.fill, L) str(M) ## À fazer: ## 1) tocar colunas de lugar, fatores antes, respostas depois. ## 2) trocar NA por tot. ## 3) talvez reordenar linhas. ## 4) encontrar uma forma automática de gerar todas as formulas a partir ## dos termos passados para ganhar tempo. Foi usado que a aggregate() aceita fórmulas, a lapply() varre as fórmulas, dentro ocorre a agregação seguida de merge(), depois o "deslistamento" usando a rbind.fill() para empilhar data.frame que não tem o mesmo nome/número de colunas. À disposição. Walmes.