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@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.

Responder a