
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

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/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.

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.

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.
participantes (3)
-
Cesar Rabak
-
Raphael Saldanha
-
Tiago Fragoso