[R-br] Dificuldade para manipular interlavo de minutos.

Augusto Ribas ribas.aca em gmail.com
Terça Junho 14 23:41:42 BRT 2011


Ola pessoal, estou aqui tendo problemas para usar horas com o R.
Bem basicamente o que eu queria fazer é o seguinte, fiquei observando uns
propágulos de macrófitas descendo o rio, ai marcando que horas eu os via.
Quando subia algum barquinho eu marcava numa planilha barco subiu, e
continuava marcando.
Ai ficou uma planilha mais ou menos assim:
  classe       hora
      s        06:45
      s        08:30
      s        09:17
      b       10:20
      b       10:30
      b       10:40
      b       11:10
      b       11:22
      b       11:33
onde "s" é sem barco e "b" com barco
ai a partir dessa planilha eu queria gerar uma planilha com a diferença de
tempo entre cada propágulo, tipo linha 2 - linha 1 por classe;
segue um código do que estive fazendo e no final algumas perguntas:

##############################################################

# exemplo
hora<-c("11:33","9:17","6:45","8:30","10:20","10:30","10:40","11:10","11:22")
classe<-c("b",rep("s",3),rep("b",5))
exemplo<-data.frame(cbind(classe,hora))
exemplo

#transformando em hora
exemplo$hora<-as.POSIXct(strptime(exemplo$hora,format="%H:%M"))
exemplo

#organizando a planilha por hora
exemplo<-exemplo[order(exemplo$hora),]
exemplo

#o que eu preciso são as diferenças de tempo assim:
difftime(exemplo[2,2],exemplo[1,2])

#tentando gerar a planilha que gostaria com um loop de for e um if
dif<-NA
evento<-NA
for (n in 1:(nrow(exemplo)-1)) {
if(exemplo$classe[n+1]==exemplo$classe[n])   {
dif[n]<-difftime(exemplo[n+1,2],exemplo[n,2])
evento[n]<-exemplo$classe[n]
}
}
final<-data.frame(cbind(evento,dif))
final

#########################################################################3

Bem, estou quebrando cabeça aqui, se alguem puder dar uma luz no seguinte:
01 - Porque o difftime se torna um numero quando o loop o coloca dentro do
dif? O Dif tem que ser de antemão da classe Date-time?
02 - Porque o evento ali sai numeros e não a classe s ou b?
03 - no meu final, eu nao quero a diferença de tempo da hora que ta trocando
de sem barco pra com barco, onde fica NA, como eu faria fazer aquilo nao
existir? Tem que colocar algo no else pra não realizar nenhuma operação?
04 - A mensagem truncated se dar por causa do if não calcular a diferença da
linha 4 com a 3?

Bem é isso, se alguem puder ajudar...


-- 
Grato
Augusto C. A. Ribas

Site Pessoal: http://augustoribas.heliohost.org
Lattes: http://lattes.cnpq.br/7355685961127056
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110614/34503ef7/attachment.html>


Mais detalhes sobre a lista de discussão R-br