Ola pessoal.<br>Estou aqui denovo pra pedir uma ajudinha.<br>Eu estou com uns dataframes com 2 colunas, uma são nome de especies de hospedeiro e outra nome de especie de parasita.<br>Ai a lista é na verdade parasita tal ocorreu em hospedeiro fulano<br>
Até aqui tudo bem, agora eu empaquei pq queria transformar isso  em uma matriz de presensa e ausencia, com colunas sendo parasitos e linhas hospedeiro, ai onde tem interação entre os 2 fica preenchido com 1<br>e onde nao tem com 0.<br>
Eu fiz um exemplo com uma matriz pequenininha e como eu estou tentando resolver.<br>Pensei em usar um teste de logica pra ir preenchendo a matriz mas eu não sei como fazer isso de modo eficiente.<br>Pq o maximo que cheguei foi testar cada celula da matriz com toda a lista, e como a lista é meio grande é meio perdido fazer assim.<br>
Mas segue o exemplo que acho que ta facil entender, se alguem tiver uma solução facil na manga faria minha semana muito feliz :)<br><br>#-------------------------------------------------------------------------------------------------<br>
#exemplo de dados<br>dados<-data.frame(parasito=c("a","b","b","c","d","d"),<br>                  hospedeiro=c("1","1","1","2","2","3"))<br>
#como eles estão agora<br>dados<br><br>#Eu preciso de uma matriz de presença e ausencia<br>#dai faço uma matriz<br>matriz<-matrix(data=NA,nrow=length(unique(dados$parasito)),<br>               ncol=length(unique(dados$hospedeiro)),<br>
               dimnames=list(c(as.character(unique(dados$parasito))),<br>               c(as.character(unique(dados$hospedeiro)))))<br><br>#blz agora preciso que a lista em dados seja representada<br>#atraves dessa matriz<br>
matriz<br><br>#Eu imaginei um teste assim<br>#Linha 1 coluna 1<br>matriz[1,1]<-ifelse(colnames(matriz)[1]==dados$hospedeiro[1]<br>       & rownames(matriz)[1]==dados$parasito[1]<br>       ,1,0)<br>#aqui eu testei se a primeira linha do data.frame corresponde a essa interação, como corresponde ele coloca 1<br>
       <br>matriz<br><br>#linha 1 Coluna 2<br>matriz[1,2]<-ifelse(colnames(matriz)[2]==dados$hospedeiro[1]<br>       & rownames(matriz)[1]==dados$parasito[1]<br>       ,1,0)<br>#o mesmo pra linha 1 coluna 2, ele coloca 0 pq a a primeira linha do data.frame não corresponde a essa interação<br>
matriz<br><br>#Blz, mas eu não consegui pensar em um jeito de faze ele rodar pra<br>#toda a matriz que eu tenho de forma direta, eu queria monta um loop<br>#ou algo do tipo que eu so fala-se o tamanho da matriz e ele testa-se<br>
#logo tudo, ou melhor acho que seria faze algo que olhe a lista<br>#e teste pra cada linha da lista e ponha um 1 la na matriz<br><br>Obrigado e boa semana a todos.<br clear="all"><br>-- <br><div>Grato<br>Augusto C. A. Ribas</div>

<div> </div>
<div>Site Pessoal: <a href="http://augustoribas.heliohost.org" target="_blank">http://augustoribas.heliohost.org</a></div>
<div>Lattes: <a href="http://lattes.cnpq.br/7355685961127056" target="_blank">http://lattes.cnpq.br/7355685961127056</a><br></div><br>