idade=c("1","3","2","2","1","2","1","3","1","3")
sexo <- c("1","1","2","2","1","2","1","1","1","1")
tcont <- c(100,320,24,256,134,290,18,34,15,121)
read <- c("s","n","n","n","s","s","s","n","n","s")
dados <- data.frame(idade, sexo,tcont,read)
by(dados, list(dados$sexo, dados$idade), function(x) data.frame(sexo=x$sexo[1], idade=x$idade[1], tcont=sum(x$tcont), read=sum(x$read == 's')))
do.call(rbind, by(dados, list(dados$sexo, dados$idade), function(x) data.frame(sexo=x$sexo[1], idade=x$idade[1], tcont=sum(x$tcont), read=sum(x$read == 's'))))
Não tem todas combinações sexo-idade pq nos dados que tu deu como exemplo eles não aparecem