<div>01 -o que acontece (deve ser resitrado) se a condição do if() nao for satisfeita?</div><div>Tirar o NA, tipo um else falando não faça nada, não exista essa linha se a condição do if não for respeitada.</div><div>Mas acho que retirar o NA depois é mais facil como vc disse no final do e-mail.</div>
<div> </div><div>Completando a minha historinha, sempre há propagulos de macrofitas descendo o rio, dai subia um barquinho e vinham mais propagulos com maior frequencia, depois o barco ia embora e os propagulos voltavam a descer menos frequentemente, então eu pensei em fazer uma média desses intervalos de tempo pra ver se com com barco no rio descem mais propagulos do que sem barco, acho que poderia fazer frequencia de propagulos por minuto também, mas intervalo de tempo me parece mais interessante. ai tenho observações em varios dias, onde um dia é assim:</div>
<div> </div><div><font face="courier new,monospace"> classe hora dia<br>1 b 11:33 1<br>2 s 9:17 1<br>3 s 6:45 1<br>4 s 8:30 1<br>5 b 10:20 1<br>6 b 10:30 1<br>7 b 10:40 1<br>
8 b 11:10 1<br>9 b 11:22 1<br>10 s 11:50 1<br>11 s 12:34 1<br>12 s 13:22 1<br>13 s 13:56 1</font></div><div> </div><div>Sendo "s" para sem barco e "b" para com barco.</div>
<div> </div><div>Então a partir dessa planilha, eu queria saber a media de intervalos de tempo entre propagulos de macrofita quanto nao tem barco no rio e quanto tem barco no rio pro dia 1</div><div>Aqui segue como eu fiz depois de ler seu e-mail:</div>
<div> </div><div>################################################################</div><div> </div><div>#exemplo</div><div>hora<-c("11:33","9:17","6:45","8:30","10:20","10:30","10:40","11:10",<br>
"11:22","11:50","12:34","13:22","13:56")<br>classe<-c("b",rep("s",3),rep("b",5),rep("s",4))<br>dia<-rep(1,13)<br>exemplo<-data.frame(cbind(classe,hora,dia))<br>
exemplo</div><div><br>#transformando a coluna hora em tempo<br>exemplo$hora<-as.POSIXct(strptime(exemplo$hora,format="%H:%M"))<br>exemplo</div><div><br>#organizando a planilha por tempo</div><div>exemplo<-exemplo[order(exemplo$hora),]<br>
exemplo</div><div> </div><div>#o que eu preciso são as diferenças de tempo assim em minutos:<br>as.numeric(difftime(exemplo[2,2],exemplo[1,2],units ="mins"))</div><div> </div><div>#tentando gerar a planilha que gostaria com um loop de for e um if</div>
<div><br>dif<-NA<br>evento<-NA<br>for (n in 1:(nrow(exemplo)-1)) {<br>if(exemplo$classe[n+1]==exemplo$classe[n]) {<br>dif[n]<-as.numeric(difftime(exemplo[n+1,2],exemplo[n,2],units ="mins"))<br>evento[n]<-as.character(exemplo$classe[n])<br>
}<br>}<br>final<-data.frame(cbind(evento,dif))<br>final<-final[complete.cases(final),]<br>tapply((as.numeric(levels(final$dif))[final$dif]),final$evento,mean)<br></div><div>###############################################################################</div>
<div> </div><div>Então, basicamente é isso que eu queria, eu li no R book(Crawley 2007) como tranformar um objeto na classe de data_time, mas achei bem pouco intuitivo, eu chutaria um "as.Date-Time" mas nunca pensaria num "as.POSIXct" pra esse tipo de transformação.</div>
<div>Mas ainda no exemplo dele:</div><div> </div><div>class(as.numeric(difftime("2005-10-21 13:40","2005-10-21 13:20",units="mins")))</div><div> </div><div>O resultado saem numerico, e as minhas diferenças saem como fator, essa parte eu ainda não entendo apesar de aparentemente ter funcionado (cheguei no output que queria).</div>
<div> </div><div>E realmente com o comando tranform fica bem mais economico e bonito fazer a mesma coisa, mas eu não compreendi o que vc fez direito, pra mim ter o mesmo resultado eu teria que colocar um difftime dentro daquele diff que vc usou? </div>
<div> </div><div>Obrigado pela ajuda e paciencia Paulo Justiniano.</div><div> </div><div><br>-- <br></div><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>