<div dir="ltr"><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">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.<br>
<br><span style="font-family:courier new,monospace">df <- data.frame(c1, c2, c3, var, peso)<br>str(df)<br><br>## Lista de fórmulas.<br>f <- c(<br> var~c1,<br> var~c2,<br> var~c3,<br> var~c1+c2,<br> var~c1+c3,<br>
var~c2+c3,<br> var~c1+c2+c3)<br><br>aggregate(f[[1]], data=df, FUN=mean)<br><br>L <- lapply(f,<br> function(fi){<br> a <- aggregate(fi, data=df, FUN=mean)<br> b <- aggregate(fi, data=df, FUN=length)<br>
m <- merge(a, b, by=names(a)[-ncol(a)])<br> names(m)[ncol(m)-1:0] <- c("mean", "length")<br> return(m)<br> })<br>str(L)<br><br>require(plyr)<br>
<br>M <- do.call(rbind.fill, L)<br>str(M)<br><br>## À fazer:<br>## 1) tocar colunas de lugar, fatores antes, respostas depois.<br>## 2) trocar NA por tot.<br>## 3) talvez reordenar linhas.<br>## 4) encontrar uma forma automática de gerar todas as formulas a partir<br>
## dos termos passados para ganhar tempo.<br></span><br></div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif">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.<br>
</div><div class="gmail_default" style="font-family:trebuchet ms,sans-serif"><br></div>À<div class="gmail_default" style="font-family:trebuchet ms,sans-serif;display:inline"> disposição.<br>Walmes.</div></div>