Y a-t-il un moyen pour moi d'analyser la chaîne suivante dans un format de date et d'heure dans R qui inclut non seulement la date mais aussi le fuseau horaire (+08: 00). Le fuseau horaire ici n'est en fait pas si important, mais il serait bon d'inclure. J'ai essayé d'utiliser as.Date et as.POSIXct mais les deux me jettent NA. Mon objectif principal de la conversion en date / heure est de pouvoir les trier par heure et également de filtrer la trame de données par heure si nécessaire.
01 Jul 2019 12:56:43 +08:00
Je serais heureux de fournir plus d'informations si nécessaire.
3 Réponses :
Le package lubridate est un bon choix pour analyser (et travailler avec) les dates:
library(lubridate)
dmy_hms("01 Jul 2019 12:56:43 +08:00")
Devrait être possible avec la base R as.POSIXct et strptime ainsi que
strptime("01 Jul 2019 12:56:43 +08:00", format = "%d %b %Y %T")
OU
as.POSIXct("01 Jul 2019 12:56:43 +08:00", format = "%d %b %Y %T")
Vous devez ajouter % z et supprimer deux points du décalage: as.POSIXct (sub (": (..) $", "\\ 1", "01 juil.2019 12:56: 43 +09: 00 "), format ="% d% b% Y% T% z ")
@ G.Grothendieck Je suis surpris mais cela fonctionne toujours pour moi as.POSIXct ("01 juil.2019 12:56:43 +08: 00", format = "% d% b% Y% T") code> # [1] "01/07/2019 12:56:43 +08"
Avec le code dans la réponse, sous Windows R 3.5.3 si je change le +08: 00 à +09: 00 j'obtiens toujours le même résultat.
Utilisez la fonction dmy_hms du package lubridate comme d'autres l'ont suggéré, mais assurez-vous de spécifier le fuseau horaire local que vous souhaitez utiliser via le tz argument.
OlsonNames(tzdir = NULL) R> OlsonNames(tzdir = NULL) [1] "Africa/Abidjan" "Africa/Accra" "Africa/Addis_Ababa" [4] "Africa/Algiers" "Africa/Asmara" "Africa/Asmera" [7] "Africa/Bamako" "Africa/Bangui" "Africa/Banjul" [10] "Africa/Bissau" "Africa/Blantyre" "Africa/Brazzaville" [13] "Africa/Bujumbura" "Africa/Cairo" "Africa/Casablanca" [16] "Africa/Ceuta" "Africa/Conakry" "Africa/Dakar" [19] "Africa/Dar_es_Salaam" "Africa/Djibouti" "Africa/Douala" [22] "Africa/El_Aaiun" "Africa/Freetown" "Africa/Gaborone" [25] "Africa/Harare" "Africa/Johannesburg" "Africa/Juba" [28] "Africa/Kampala" "Africa/Khartoum" "Africa/Kigali" ...
Pour une liste complète des fuseaux horaires disponibles, exécutez
lurbidate::dmy_hms("01 Jul 2019 12:56:43 +08:00", tz = "America/Chicago")
R> dmy_hms(date, tz = "America/Chicago")
Date in ISO8601 format; converting timezone from UTC to "America/Chicago".
[1] "2019-06-30 23:56:43 CDT"
C'est un bon indice! Cependant, cela n'affectera que l'affichage; les résultats des calculs seront corrects dans tous les cas.