Existe ainda uma outra alternativa nesse caso que é o uso do data.table:

sexo=c("1","1","2","2","1","2","1","1","1","1","2")
idade=c("1","3","2","1","1","1","2","2","3","3","3")
tcont=c(100,320,24,256,134,290,18,34,15,121,32)
read=c("1","0","0","0","1","1","1","1","1","1","0")
df=data.frame(sexo,idade,read,tcont)

require(data.table)
dt <- data.table(df)
dt[,list(soma=sum(tcont), count=.N), by=list(idade,sexo)]

que é equivalente a :

ddply(dados, .(idade, sexo), summarize, soma=sum(tcont), count = length(tcont))

ambos com saída:

   idade sexo soma count
1:     1    1  267     4
2:     2    2  570     3
3:     3    1  475     3

O data.table tem uma grande vantagem sobre o plyr que é a velocidade. Quando o arquivo é muito grande ele pode chegar a ser 100x mais rápido.


2013/10/11 Fátima Lima Paula <fatima.lima.paula@gmail.com>
Vinícius, não sei se é isso que você quer, mas eu fiz da seguinte forma:

sexo=c("1","1","2","2","1","2","1","1","1","1","2")
idade=c("1","3","2","1","1","1","2","2","3","3","3")
tcont=c(100,320,24,256,134,290,18,34,15,121,32)
read=c("1","0","0","0","1","1","1","1","1","1","0")
df=data.frame(sexo,idade,read,tcont)
df
   sexo idade read tcont
1     1     1    1   100
2     1     3    0   320
3     2     2    0    24
4     2     1    0   256
5     1     1    1   134
6     2     1    1   290
7     1     2    1    18
8     1     2    1    34
9     1     3    1    15
10    1     3    1   121
11    2     3    0    32

lixo=do.call(rbind, by(df, list(df$sexo, df$idade), function(x) data.frame(sexo=x$sexo[1], idade=x$idade[1],
  tcont=mean(x$tcont), reads=sum(x$read == "1"))))
  sexo idade tcont reads
1    1     1   117     2
2    2     1   273     1
3    1     2    26     2
4    2     2    24     0
5    1     3   152     2
6    2     3    32     0

Acho que consegui pesquisando no google.
Abs
Fátima


Em 10 de outubro de 2013 18:29, Vinicius Brito Rocha <viniciusbritor@gmail.com> escreveu:

walmes, 

uma pergunta. é possível ter diferentes funções no aggregate? uma para cada tipo de variável?

imagine quer contar em uma e somar em outra (como numa query padrão sql)

Abs

Vinicius


Em 10 de outubro de 2013 18:11, walmes . <walmeszeviani@gmail.com> escreveu:
A aggregate() faz a mesma coisa de uma forma mais sofisticada.

aggregate(cbind(tcont,read)~sexo+idade,
          data=dados, FUN=sum)


Mais opções estão disponíveis com as funções do pacote plyr, como

require(plyr)
ddply(dados, .(sexo,idade), summarise,
      tcont=sum(tcont), read=sum(read))

onde você pode usar funções diferentes para cada variável ou até usar mais de uma vez uma mesma variável.

À disposição.
Walmes.

==========================================================================
Walmes Marques Zeviani
LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W)
Departamento de Estatística - Universidade Federal do Paraná
fone: (+55) 41 3361 3573
skype: walmeszeviani
homepage: http://www.leg.ufpr.br/~walmes
linux user number: 531218
==========================================================================


_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.



--
Vinicius Brito Rocha.
Estatístico e Atuário 
M.Sc. Engenharia de Produção/PO




_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.



--
"Minha felicidade depende da qualidade dos meus pensamentos"

_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.