[R-br] Combinar colunas de um banco de dados...
Fabio Mathias Corrêa
fabio.ufla em yahoo.com.br
Terça Julho 31 14:41:41 BRT 2012
Segue abaixo um exemplo de como fazer a combinação de colunas sem utilizar o laço for. Dependendo da operação o for pode demandar muito tempo!
X <- matrix(1:120,10,12)
X
combina <- combn(ncol(X),6)
dim(combina)
MultMat <- array(X[,combina],dim=c(nrow(X),dim(combina)[1],dim(combina)[2]))
dim(MultMat)
### Conferindo
MultMat[,,1:2]
MultMat[,,3]
MultMat[,,924]
### Somando as linhas de cada combinação
soma_linhas <- apply(MultMat,3,rowSums)
dim(soma_linhas)
Valeu!!!
Fábio Mathias Corrêa
Universidade Estadual de Santa Cruz
Departamento de Ciências Exatas e da Terra - DCET
Campus Soane Nazaré de Andrade, km 16 Rodovia Ilhéus-Itabuna
CEP 45662-900. Ilhéus-Bahia
Tel.: 73-3680-5076
________________________________
De: andrebvs <andrebvs em bol.com.br>
Para: r-br em listas.c3sl.ufpr.br
Enviadas: Terça-feira, 31 de Julho de 2012 13:22
Assunto: Re: [R-br] Combinar colunas de um banco de dados...
obg Luciano!
________________________________
Em 30/07/2012 09:24, Luciano F. Sgarbi < luciano.f.sgarbi em gmail.com > escreveu:
#Seria isso:
data<-read.table('clipboard',h=T)##esse é aquela matriz de 12 colunas
combinations<-combn(colnames(data),6)
loop<-ncol(combinations)
resu<-matrix(0,10,loop)
colnames(resu)<-paste(rep("comb",loop),"_",1:loop,sep="")
rownames(resu)<-paste(rep("row",10),"_",1:10,sep="")
for(i in 1:loop){
resu[,i]<-rowSums(data[,combinations[,i]])
}
resu
2012/7/29 andrebvs <andrebvs em bol.com.br>
Obg colegas!
>
>Agora, tem como somar as linhas de cada combinação? De forma que eu tenha um resultado geral do tipo:
>
>C1Â C2Â C3Â ... C924
>[1,]Â Â Â 5Â Â 5
>[1,] Â Â 6Â Â 5
>[1,] Â Â 4Â Â 6
>[1,] Â Â 6Â Â 5
>[1,]Â Â Â 6Â Â 4
>[1,] Â Â 4Â Â 7
>[1,]Â Â Â 4Â Â 7
>[1,] Â Â 3Â Â 8
>[1,] Â Â 9Â Â 8
>[1,] Â Â 2 Â 6
>.
>.
>.
>[1265,]
>
>
>thanks!
>
>
>>________________________________
> Em 29/07/2012 20:01, Luciano F. Sgarbi < luciano.f.sgarbi em gmail.com > escreveu:
>É isso mesmo!
>
>
>2012/7/29 Pedro Rafael <pedro.rafael.marinho em gmail.com>
>
>Se quiser uma outra combinação colocar dados[as.vector(colunas_combinadas[,2])]
>>
>>[ Â ],
>>Pedro Rafael Diniz Marinho.
>>
>>
>>
Em 29 de julho de 2012 19:55, Pedro Rafael
>><pedro.rafael.marinho em gmail.com> escreveu:
>>> dados = read.table("dados_teste.txt",header=TRUE)
>>> nomes_das_colunas = as.vector(colnames(dados))
>>> colunas_combinadas = combn(nomes_das_colunas,6)
>>> dados[as.vector(colunas_combinadas[,1])]
>>> [ Â ],
>>> Pedro Rafael Diniz Marinho.
>>>
>>>
>>> Em 29 de julho de 2012 19:47, andrebvs [via R-br]
>>> <ml-node+s2285057n4655711h18 em n4.nabble.com> escreveu:
>>>> Olá Luciano!
>>>>
>>>> A dúvida é a seguinte:
>>>> 1º) Tenho o seguinte banco de dados abaixo:
>>>>
>>>>
>>>> Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12
>>>> 1 Â Â 1 Â 0 Â 3 Â 1 Â 0 Â 0 Â 0 Â 1 Â 0 Â Â 1 Â Â 0 Â Â 1
>>>> 2 Â Â 1 Â 3 Â 0 Â 0 Â 1 Â 1 Â 0 Â 1 Â 1 Â Â 0 Â Â 2 Â Â 1
>>>> 3 Â Â 0 Â 2 Â 1 Â 0 Â 0 Â 1 Â 3 Â 0 Â 0 Â
 1   0   0
>>>> 4 Â Â 1 Â 0 Â 0 Â 2 Â 2 Â 1 Â 0 Â 0 Â 0 Â Â 0 Â Â 2 Â Â 1
>>>> 5 Â Â 0 Â 2 Â 1 Â 0 Â 1 Â 2 Â 0 Â 1 Â 1 Â Â 1 Â Â 0 Â Â 2
>>>> 6 Â Â 1 Â 1 Â 0 Â 1 Â 1 Â 0 Â 3 Â 1 Â 2 Â Â 1 Â Â 1 Â Â 0
>>>> 7 Â Â 1 Â 1 Â 0 Â 1 Â 1 Â 0 Â 0 Â 0 Â 0 Â Â 1 Â Â 1 Â Â 1
>>>> 8 Â Â 0 Â 1 Â 0 Â 1 Â 0 Â 1 Â 2 Â 0 Â 2 Â Â 0 Â Â 3 Â Â 0
>>>> 9 Â Â 1 Â 2 Â 3 Â 1 Â 2 Â 0 Â 0 Â 0 Â 0 Â Â 2 Â Â 0 Â Â 1
>>>> 10 Â Â 0 Â 1 Â 0 Â 1 Â 0 Â 0 Â 1 Â 0 Â 1 Â Â 1 Â Â 0 Â Â 2
>>>>
>>>> 2º) Quero combinar todas as 12 colunas tomadas 6 à 6, fazendo as contas
>>>> terei 924 combinações possivéis, e uma combinação possÃvel seria, por
>>>> exemplo a seguinte:
>>>>
>>>> Q1 Â Q4 Â Q7 Q8 Q9 Â Q12
>>>> 1 Â Â 1 Â Â 1 Â Â 0 Â 1 Â 0 Â Â 1
>> 2   1   0   0 Â  1  1   1
>>
>>>> 3 Â Â 0 Â Â 0 Â Â 3 Â 0 Â 0 Â Â 0
>>>> 4 Â Â 1 Â Â 2 Â Â 0 Â 0 Â 0 Â Â 1
>>>> 5 Â Â 0 Â Â 0 Â Â 0 Â 1 Â 1 Â Â 2
>>>> 6 Â Â 1 Â Â 1 Â Â 3 Â 1 Â 2 Â Â 0
>>>> 7 Â Â 1 Â Â 1 Â Â 0 Â 0 Â 0 Â Â 1
>>>> 8 Â Â 0 Â Â 1 Â Â 2 Â 0 Â 2 Â Â 0
>>>> 9 Â Â 1 Â Â 1 Â Â 0 Â 0 Â 0 Â Â 1
>>>> 10 Â Â 0 Â 1 Â Â 1 Â 0 Â 1 Â Â 2
>>>>
>>>> Repare que, das 12 colunas iniciais, tenho essa última com 6 colunas, a qual
>>>> é uma possÃvel combinação das 924. Então, como extrair todas as 924
>>>> combinações da matriz inicial?
>>>>
>>>> 3º) Após isso, ou seja, após ter encontrado todas as 924 combinações,
>>>> gostaria também, que tivesse um vetor q ue me retorne a soma de cada linha
>>>> de cada combinação. Por exemplo:
>>>>
>>>> combin
ação1
>>>> combinação924
>>>> Q1  Q4  Q7 Q8 Q9  Q12   soma das linhas      . . . Q6  Q1  Q11  Q2 Q9
>>>> Q7 Â Â Â Â Â soma das linhas
>>>> 1 Â Â 1 Â Â 1 Â Â 0 Â 1 Â 0 Â Â 1 Â Â Â Â Â Â 4
>>>> 0 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 2
>>>> 2 Â Â 1 Â Â 0 Â Â 0 Â 1 Â 1 Â Â 1 Â Â Â Â Â Â 4
>>>> 1 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 3
>>>> 3   0   0   3  0  0   0       3                � �
>>>> 3 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 5
>>>> 4 Â Â 1 Â Â 2 Â Â 0 Â 0 Â 0 Â Â 1 Â Â Â Â Â Â 4
>>>> 3 Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â 1
>>>> 5 Â Â 0 Â Â 0 Â Â 0 Â 1 Â 1 Â Â 2 Â Â Â Â Â Â 4
&g t;> . Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â .
>>
>>>> 6 Â Â 1 Â Â 1 Â Â 3 Â 1 Â 2 Â Â 0 Â Â Â Â Â Â 8
>>>> . Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â .
>>>> 7   1   1   0  0  0   1       3                �
>>>> �   .                          .
>>>> 8 Â Â 0 Â Â 1 Â Â 2 Â 0 Â 2 Â Â 0 Â Â Â Â Â Â 5
>>>> etc                        etc
>>>> 9 Â Â 1 Â Â 1 Â Â 0 Â 0 Â 0 Â Â 1 Â Â Â Â Â Â 3
>>>> 10 Â Â 0 Â 1 Â Â 1 Â 0 Â 1 Â Â 2 Â Â Â Â Â Â 5
>>>>
>>>> desde já agradeço!
>>>>
>>>>
>>>> ________________________________
>> Em 29/07/2012 19:04, Luciano F. Sgarbi < [hidde n email] > escreveu:
>>
>>>> Boa tarde.
>>>> Tentei, mas não entendi sua pergunta.
>>>> Você pode ser um pouco mais especifico?
>>>> Abraços
>>>>
>>>> 2012/7/29 andrebvs
>>>>>
>>>>> Olá pessoal, gostaria de saber como faço para combinar essas 12 colunas
>>>>> (Q1 até Q12) tomados 6 à 6 colunas:
>>>>>
>>>>> Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12
>>>>> 1 Â Â 1 Â 0 Â 3 Â 1 Â 0 Â 0 Â 0 Â 1 Â 0 Â Â 1 Â Â 0 Â Â 1
>>>>> 2 Â Â 1 Â 3 Â 0 Â 0 Â 1 Â 1 Â 0 Â 1 Â 1 Â Â 0 Â Â 2 Â Â 1
>>>>> 3 Â Â 0 Â 2 Â 1 Â 0 Â 0 Â 1 Â 3 Â 0 Â 0 Â Â 1 Â Â 0 Â Â 0
>>>>> 4 Â Â 1 Â 0 Â 0 Â 2 Â 2 Â 1 Â 0 Â 0 Â 0 Â Â 0 Â Â 2 Â Â 1
>>>>> 5 Â Â 0 Â 2 Â 1 Â 0 Â 1 Â 2 Â 0 Â 1 Â 1 Â Â 1 Â Â 0 Â Â 2
>>> 6   1  1  0  1  1  0  3  1 Â  2   1   1   0
>>
>>>>> 7 Â Â 1 Â 1 Â 0 Â 1 Â 1 Â 0 Â 0 Â 0 Â 0 Â Â 1 Â Â 1 Â Â 1
>>>>> 8 Â Â 0 Â 1 Â 0 Â 1 Â 0 Â 1 Â 2 Â 0 Â 2 Â Â 0 Â Â 3 Â Â 0
>>>>> 9 Â Â 1 Â 2 Â 3 Â 1 Â 2 Â 0 Â 0 Â 0 Â 0 Â Â 2 Â Â 0 Â Â 1
>>>>> 10   0  1 � � 0  1  0  0  1  0  1   1   0   2
>>>>>
>>>>> desde já agradeço!
>>>>>
>>>>> Att.
>>>>> André
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> R-br mailing list
>>>>> R-br em ...
>>>>>
>>>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.b r/r-br-guia) e forneça
>>
>>>>> código mÃnimo reproduzÃvel.
>>>>
>>>>
>>>>
>>>> --
>>>> Luciano F. Sgarbi
>>>> Mestrando em Ecologia e Evolução - UFG
>>>>
>>>> Laboratório de Ecologia de Insetos
>>>> Cel. (62)8174-2262 Lab. (62)3521-1732
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> R-br mailing list
>>>> [hidden email]
>>>> 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.
>>>>
>>>> ________________________________
>>>> If you reply to this email, your message will be added to the discussion
>>>> below:
>>>> http://r-br.2285057.n4.nabble.com/R-br-Combinar-colunas-de-um-banco-de-dados-tp4655709p4655711.html
>>>> To unsubscribe from R-br, click here.
>>>> NAML
>>_______________________________________________
>>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.
>
>
>--
>Luciano F. Sgarbi
>Mestrando em Ecologia e Evolução - UFG
>Laboratório de Ecologia de Insetos
>
>Cel. (62)8174-2262 Lab. (62)3521-1732
>Â
>Â
>
>
>_______________________________________________
>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.
>
--
Luciano F. Sgarbi
Mestrando em Ecologia e Evolução - UFG
Laboratório de Ecologia de Insetos
Cel. (62)8174-2262 Â Lab. (62)3521-1732
Â
Â
_______________________________________________
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/20120731/f09972d6/attachment.html>
Mais detalhes sobre a lista de discussão R-br