La correction de Format de l'Heure dans la R

0

La question

J'ai une colonne timestamp à partir d'une course; le temps des journaux sont donnés soit au format HH:MM:SS ou MM:SS. J'ai besoin de les convertir à partir de caractères le format de l'heure; je vais les utiliser comme.POSIXct mais d'abord je vais avoir des questions concernant les observations lorsque le format MM:SS, par opposition à HH:MM:SS. Quand je l'applique comme.POSIXct de la colonne, j'obtiens une erreur à cause de toutes les observations qui n'ont pas le même format. Comment puis-je ajouter de la "00:" conduisant à une "59:34" timestamp?

Le temps "59:34" "32:07" "1:08:06"

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

La meilleure réponse

3

Une base R en option -

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"

Depuis il n'y a pas de date dans les données as.POSIXct ajoute aujourd'hui la date.

2021-11-24 05:55:51

Intéressant. J'ai essayé cette seconde ligne que vous avez fournie ici. Mais w/le format et le fuseau horaire. Quel est le format?
Père Noël

format est utilisé pour fournir le format d'entrée de vos données est en cours. as.POSIXct attend YYYY-MM-DD HH:MM:SS format mais depuis notre entrée est dans un format différent, nous devons spécifier que séparément. %T est utilisé lorsque vous avez des données dans HH:MM:SS format. Plus de détails sur les différents formats ?strptime.
Ronak Shah
2

Voici une solution à l'aide de lubridate::hms. Si vous souhaitez utiliser as.POSIXct, remplacer votre code pour que.

Il suppose que toutes les valeurs sont soit en MM:SS ou HH: MM: SS.

ts1 est les valeurs d'origine, ts2 pré-entrée avec "00:" le cas échéant et ts3 les valeurs finales.

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

Résultat:

      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

J'ai un léger problème; la nuit dernière, le code a très bien fonctionné, mais aujourd'hui, je reçois cette erreur: "Erreur: Problème de la mutate() colonne ts3. j' ts3 = hms(ts2). x Tous les arguments doivent être numériques ou NA"
Père Noël

pistolet <- data.cadre(ts1 = masculin.données$Gun.Tim) %>% muter(ts2 = ifelse(str_count(ts1, ":") == 1, paste0("00:", ts1), ts1), ts3 = hms(ts2)) <<< C'est comment j'ai construit mon code, du pistolet.Tim est mon temps de vecteur.
Père Noël

Aurait besoin de voir les données dans gun pour les aider. Code fonctionne avec des données d'exemple dans la question.
neilfws

Dans d'autres langues

Cette page est dans d'autres langues

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