[R-br] Tabelas Complexas

Pedro Emmanuel Alvarenga Americano do Brasil emmanuel.brasil em gmail.com
Quinta Julho 31 14:21:00 BRT 2014


Leandro,

Não tenho certeza se entendi certo o seu problema. Se for pra fazer uma
tabela empilhada de diversas variáveis (na linhas) po ruma única variável
nas colunas, então a função é epicalc::tableStack

Abraço,

Dr. Pedro Emmanuel A. A. do Brasil
http://blog.ipec.fiocruz.br/lapclin-chagas/
Curriculum Lattes:  http://lattes.cnpq.br/6597654894290806
ResearchGate.net: https://www.researchgate.net/profile/Pedro_Brasil2/
Instituto Nacional de Infectologia/Instituto de Pesquisa Clínica Evandro
Chagas
Fundação Oswaldo Cruz
Rio de Janeiro - Brasil
Av. Brasil 4365,
CEP 21040-360,
Tel 55 21 3865-9648
e-mail: pedro.brasil em ipec.fiocruz.br
e-mail: emmanuel.brasil em gmail.com


Em 31 de julho de 2014 12:00, Leandro Marino <
leandromarino em leandromarino.com.br> escreveu:

> Caros,
>
> rotineiramente me deparo com um problema que não sei como resolver.
> Considerem o seguinte exemplo:
>
> (c1 <- trunc(runif(1000,1,10)))
> (c2 <- trunc(runif(1000,5,70)))
> (c3 <- trunc(runif(1000,1,4)))
> (var <- rnorm(1000,10,2))
> (peso <- round(rnorm(1000,1,.2)^2,1))
> df <- data.frame(c1,c2,c3,var,peso)
>
>
> Gostaria de uma função que pudesse me fornecer em uma única tabela do tipo
> cols = c1,c2,c3,count,medvar
> e, mais genericamente,
> cols = c1,c2,c3,somapeso,medpondvar
>
> com todas as combinações existentes (as vezes todas as teoricamente
> possiveis) entre c1,c2,c3
> c1
> c2
> c3
> c1*c2
> c1*c3
> c2*c3
> c1*c2*c3
>
> De forma mais específica, gostaria:
>
> t1 <- aggregate(list(count = df$var), list(c1=rep('*tot',1000)
> ,c2=rep('*tot',1000),c3=rep('*tot',1000)),length)
> tc1 <- aggregate(list(count = df$var), list(c1=df$c1
> ,c2=rep('*tot',1000),c3=rep('*tot',1000)),length)
> tc2 <- aggregate(list(count = df$var), list(c1=rep('*tot',1000),c2=df$c2
> ,c3=rep('*tot',1000)),length)
> tc3 <- aggregate(list(count = df$var),
> list(c1=rep('*tot',1000),c2=rep('*tot',1000),c3=df$c3 ),length)
> tc1c2 <- aggregate(list(count = df$var), list(c1=df$c1 ,c2=df$c2
> ,c3=rep('*tot',1000)),length)
> tc1c3 <- aggregate(list(count = df$var), list(c1=df$c1
> ,c2=rep('*tot',1000),c3=df$c3 ),length)
> tc2c3 <- aggregate(list(count = df$var), list(c1=rep('*tot',1000),c2=df$c2
> ,c3=df$c3 ),length)
> tc1c2c3 <- aggregate(list(count = df$var), list(c1=df$c1 ,c2=df$c2
> ,c3=df$c3),length)
> comp1 <- rbind(t1,tc1,tc2,tc3,tc1c2,tc1c3,tc2c3,tc1c2c3)
> rm(t1,tc1,tc2,tc3,tc1c2,tc1c3,tc2c3,tc1c2c3)
>
> t1 <- aggregate(list(medvar = df$var), list(c1=rep('*tot',1000)
> ,c2=rep('*tot',1000),c3=rep('*tot',1000)),mean)
> tc1 <- aggregate(list(medvar = df$var), list(c1=df$c1
> ,c2=rep('*tot',1000),c3=rep('*tot',1000)),mean)
> tc2 <- aggregate(list(medvar = df$var), list(c1=rep('*tot',1000),c2=df$c2
> ,c3=rep('*tot',1000)),mean)
> tc3 <- aggregate(list(medvar = df$var),
> list(c1=rep('*tot',1000),c2=rep('*tot',1000),c3=df$c3 ),mean)
> tc1c2 <- aggregate(list(medvar = df$var), list(c1=df$c1 ,c2=df$c2
> ,c3=rep('*tot',1000)),mean)
> tc1c3 <- aggregate(list(medvar = df$var), list(c1=df$c1
> ,c2=rep('*tot',1000),c3=df$c3 ),mean)
> tc2c3 <- aggregate(list(medvar = df$var),
> list(c1=rep('*tot',1000),c2=df$c2 ,c3=df$c3 ),mean)
> tc1c2c3 <- aggregate(list(medvar = df$var), list(c1=df$c1 ,c2=df$c2
> ,c3=df$c3),mean)
> comp2 <- rbind(t1,tc1,tc2,tc3,tc1c2,tc1c3,tc2c3,tc1c2c3)
> rm(tc1,tc2,tc3,tc1c2,tc1c3,tc2c3,tc1c2c3)
>
> comp <- merge(comp1,comp2,by=c('c1','c2','c3'),all=T)
> rm(comp1,comp2)
>
>
> Exite algum pacote que faca isso?
>
>
>
>
>
>
> _______________________________________________
> R-br mailing list
> R-br em 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.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140731/9bbe84c7/attachment.html>


Mais detalhes sobre a lista de discussão R-br