Resolvido, eu não sei pq compliquei tanto.<br><br>Obtive uma resposta assim:<br><br>#--------------<br>with(dados, ifelse(table(parasito, hospedeiro) > 0, 1, 0))<br>#---------------<br><br>So não tinha conseguido visualizar isso sozinho.<br>
Mas agradeço a atenção de qualquer forma :)<br><br><br><br><div class="gmail_quote">Em 26 de março de 2012 15:30, Augusto Ribas <span dir="ltr"><<a href="mailto:ribas.aca@gmail.com">ribas.aca@gmail.com</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">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.<span class="HOEnZb"><font color="#888888"><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>
</font></span></blockquote></div><br><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>