Correggere il Formato di Ora in R

0

Domanda

Ho una colonna di tipo timestamp da una gara; il tempo di registri sia nel formato HH:MM:SS formato o formato MM:SS. Ho bisogno di convertirli dal carattere formato ora userò come.POSIXct ma prima sto avendo problemi di gestione con le osservazioni di cui il formato MM:SS anziché HH:MM:SS. Quando applico come.POSIXct alla colonna, ottengo un errore, perché tutte le osservazioni non hanno lo stesso formato. Come faccio ad aggiungere il "00:", fino al "59:34" timestamp?

Tempo "59:34" "32:07" "1:08:06"

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

Migliore risposta

3

Una base di R-opzione

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"

Poiché non vi è alcuna data in data as.POSIXct aggiunge oggi la data.

2021-11-24 05:55:51

Interessante. Ho provato la seconda linea è fornito di seguito. Ma w/il formato e il fuso orario. Che cosa significa il formato di fare?
Père Noël

format viene utilizzato per fornire il formato di immissione dei dati nel. as.POSIXct si aspetta YYYY-MM-DD HH:MM:SS il formato, ma dal momento che il nostro ingresso è in un formato differente e abbiamo bisogno di specificare che separatamente. %T viene utilizzato quando si dispone di dati in HH:MM:SS formato. Ulteriori dettagli di formati diversi ?strptime.
Ronak Shah
2

Ecco una soluzione che utilizza lubridate::hms. Se si desidera utilizzare as.POSIXctsostituire il codice per che.

Si presuppone che tutti i valori sono MM:SS HH: MM: SS.

ts1 l'originale di valori, ts2 precede con "00:" ove necessario e ts3 i valori finali.

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))

Risultato:

      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

Ho un piccolo problema; la scorsa notte, il codice ha lavorato bene, ma oggi ricevo questo errore: "Errore: Problema con mutate() colonna ts3. io ts3 = hms(ts2). x Tutti gli argomenti devono essere numerici o NA"
Père Noël

pistola <- data.telaio(ts1 = maschio.dati$Pistola.Tim) %>% mutare(ts2 = ifelse(str_count(ts1, ":") == 1, paste0("00:", ts1), ts1), ts3 = hms(ts2)) <<< Questo è come ho costruito il mio codice; pistola.Tim è il mio momento di un vettore.
Père Noël

Avrebbe bisogno di vedere i dati gun per aiutare. Codice funziona con dati di esempio in questione.
neilfws

In altre lingue

Questa pagina è in altre lingue

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