Olá, 

Se seu formato de tempo sempre terá o formato:

P<dias>DT<horas>H<minutos>M<segundos>S 

com esses marcadores, uma expressão regular que captura esses números é dada por 

P(\d+)DT(\d+)H(\d+)M(\d+)S

salvo por alguma sutileza que te obrigue a escapar algum simbolo ai. Imagino que uma função em R que transforma em minutos seria algo do tipo:

converteMinutos <- function(Codigo){  
  componentes <- stringr::str_match(Codigo,"P(\\d+)DT(\\d+)H(\\d+)M(\\d+)S")
  componentes <- as.numeric(componentes[,2:5]) #primeiro elemento é a string completa, subsequentes são os grupos de captura
  t_minutos <- componentes%*%c(24*60,  #minutos em um dia
                                                       60,     #minutos em uma hora
                                                       1,      #minuto já está na escala
                                                       1/60)   #segundos 
  return(t_minutos)
}


2016-08-11 8:11 GMT-03:00 Raphael Saldanha via R-br <r-br@listas.c3sl.ufpr.br>:
Olá Cesar, obrigado pela dica!

2016-08-11 1:14 GMT-03:00 Cesar Rabak <cesar.rabak@gmail.com>:
Raphael,

Essa funcionalidade está "estacionada" em um pedido de "feature request" para um pacote R que cuida exatamente dessas coisas lubridate  desde dezembro de 2015! 

O parsing de cadeias ISO 8601 não é trivial e é bem documentado em fora de programação em diversas linguagens, por isso, a recomendação é que você aproveite que existe a funcionalidade pronta em Python (teste-a antes. . .) e converta as durações para um arquivo que você possa importar no R e seguir daí.

HTH
--
Cesar Rabak



2016-08-10 23:31 GMT-03:00 Raphael Saldanha via R-br <r-br@listas.c3sl.ufpr.br>:
Olá pessoal,

Preciso lidar com um formato da ISO8601 para duração de tempo. A string vem desta forma:

x <- "P4DT21H36M43S"

Onde P indica que é uma duração de tempo, 4D : quatro dias, T indica que a seguir vem informações sobre tempo em um dia, 21H : 21 horas, 36M : 36 minutos e 43S : 43 segundos.

Guia: https://www.w3.org/TR/xmlschema-2/#isoformats

Preciso criar uma função para transformar isto em minutos. Até achei algo parecido em python (https://github.com/gweis/isodate/blob/master/src/isodate/isoduration.py), mas não vi nada parecido para R.

Alguém com mais experiência em expressões regulares pode me dar uma mão?

Att,

Raphael Saldanha



_______________________________________________
R-br mailing list
R-br@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.



_______________________________________________
R-br mailing list
R-br@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.