Corrigindo o Formato de Hora em R

0

Pergunta

Eu tenho uma coluna de carimbo de data / hora a partir de uma corrida; o tempo de logs são dadas em HH:MM:SS ou formato MM:SS formato. Eu preciso convertê-los a partir de caracteres de formato de hora; eu estarei usando como.POSIXct mas primeiro, eu estou tendo problemas em lidar com as observações em que o formato MM:SS como oposição a HH:MM:SS. Quando eu aplicar como.POSIXct para a coluna, eu recebo um erro uma vez que todas as observações não têm o mesmo formato. Como faço para adicionar o "00:" que levam a uma "59:34" carimbo de data / hora?

Horário "59:34" "32:07" "1:08:06"

r
2021-11-24 05:12:40
2

Melhor resposta

3

Uma base de opção R -

x <- c("59:34", "32:07", "1:08:06")
as.POSIXct(ifelse(nchar(x) > 5, x, paste0('00:', x)), format = '%T', tz = 'UTC')

#[1]"2021-11-24 00:59:34 UTC" "2021-11-24 00:32:07 UTC" "2021-11-24 01:08:06 UTC"

Uma vez que não há data nos dados as.POSIXct acrescenta data de hoje.

2021-11-24 05:55:51

Interessantes. Eu tentei que na segunda linha você prestados aqui. Mas c/o formato e o fuso horário. O que faz o formato fazer?
Père Noël

format é usado para fornecer o formato de entrada de dados se encontra. as.POSIXct espera YYYY-MM-DD HH:MM:SS formato, mas desde a nossa entrada é em formato diferente precisamos especificar que separadamente. %T é usado quando você tiver dados em HH:MM:SS formato. Mais detalhes de formatos diferentes ?strptime.
Ronak Shah
2

Aqui está uma solução usando lubridate::hms. Se você deseja usar as.POSIXct, substituir o código para isso.

Assume-se que todos os valores são MM:SS ou HH::MM:SS.

ts1 é os valores originais, ts2 pré-pendente com "00" onde necessário e ts3 os valores finais.

library(dplyr)
library(stringr)
library(lubridate)

data.frame(ts1 = c("59:34", "32:07", "1:08:06")) %>% 
  mutate(ts2 = ifelse(str_count(ts1, ":") == 1, paste0("00:", ts1), ts1), 
         ts3 = hms(ts2))

Resultado:

      ts1      ts2      ts3
1   59:34 00:59:34  59M 34S
2   32:07 00:32:07   32M 7S
3 1:08:06  1:08:06 1H 8M 6S
2021-11-24 05:35:25

Eu tenho um pequeno problema, ontem à noite, o código funcionou muito bem, mas hoje estou recebendo este erro: "Erro: Problema com mutate() coluna ts3. eu ts3 = hms(ts2). x Todos os argumentos devem ser números, ou NA"
Père Noël

arma <- dados.quadro(ts1 = masculino.dados$Arma.Tim) %>% mutação(ts2 = ifelse(str_count(ts1, ":") == 1, paste0("00:", ts1), ts1), ts3 = hms(ts2)) <<< Isso é como eu construí o meu código; arma.A Tim é a minha vez de vetor.
Père Noël

Seria necessário ver os dados em gun para ajudar. Código funciona com dados de exemplo em questão.
neilfws

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................