
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 <https://github.com/hadley/lubridate/issues/362> 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/isod ate/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.