web-dev-qa-db-fra.com

Comment changer le fuseau horaire par défaut dans R?

Comment changer le fuseau horaire par défaut dans R? Je travaille avec des séries chronologiques. Toutes mes séries temporelles sont définies dans le fuseau horaire UTC, mais si j'imprime une date, elle est toujours effectuée dans le fuseau horaire CET/CEST. 

41
Paul PUGET

Une autre façon de le faire, sans changer tout le temps de l'ordinateur, est d'utiliser la commande setenv comme ceci: Sys.setenv(TZ='GMT')

60
Paul PUGET

Voir ce bon article sur le changement de fuseau horaire dans R:

http://blog.revolutionanalytics.com/2009/06/converting-time-zones.html

Bientôt (au cas où le lien ne serait plus disponible):

# your time string
pb.txt <- "2009-06-03 19:30"
# convert it to R object for London time zone
pb.date <- as.POSIXct(pb.txt, tz="Europe/London")
# convert it to PDT time zone
format(pb.date, tz="America/Los_Angeles",usetz=TRUE)
[1] "2009-06-03 11:30:00 PDT"

# can be also done for many date at once
d <- c("2009-03-07 12:00", "2009-03-08 12:00", "2009-03-28 12:00", "2009-03-29 12:00", "2009-10-24 12:00", "2009-10-25 12:00", "2009-10-31 12:00", "2009-11-01 12:00")
t1 <- as.POSIXct(d,"America/Los_Angeles")
cbind(US=format(t1),UK=format(t1,tz="Europe/London"))

     US                    UK                   
[1,] "2009-03-07 12:00:00" "2009-03-07 20:00:00"
[2,] "2009-03-08 12:00:00" "2009-03-08 19:00:00"
[3,] "2009-03-28 12:00:00" "2009-03-28 19:00:00"
[4,] "2009-03-29 12:00:00" "2009-03-29 20:00:00"
[5,] "2009-10-24 12:00:00" "2009-10-24 20:00:00"
[6,] "2009-10-25 12:00:00" "2009-10-25 19:00:00"
[7,] "2009-10-31 12:00:00" "2009-10-31 19:00:00"
[8,] "2009-11-01 12:00:00" "2009-11-01 20:00:00"
11
yuk

Quel système d'exploitation?

En général, voir help(Startup) car vous pouvez définir des valeurs via .Renviron et sa variante pour l'ensemble du site.

Mais vous devriez probablement définir ceci pour votre machine dans son ensemble, ce qui sous Linux peut modifier le fichier /etc/timezone, et sous Windows, vous définissez une variable d'environnement système TZ.

Enfin, si votre formaté affichage des dates et heures indique CET/CEST, il se peut que cela soit déjà défini comme système par défaut et votre question est de savoir comment définir correctement les heures UTC dans vos objets R.

8
Dirk Eddelbuettel

J'ai trouvé la réponse de @ Dirk très utile pour Ubuntu, alors j'ai pensé développer davantage.

Dans help(Startup), nous voyons que les variables d’environnement sont définies par le fichier Renviron.site:

À moins que --no-environ ne soit indiqué sur la ligne de commande, R recherche les fichiers de site et d'utilisateur à traiter pour la définition des variables d'environnement. Le nom du fichier de site est celui indiqué par la variable d'environnement R_ENVIRON; si cela n’a pas été défini, l’option 'R_HOME/etc/Renviron.site' est utilisée

Nous pouvons trouver le chemin vers R_HOME en utilisant la fonction R.home(), qui dans mon cas renvoie:

> R.home()
[1] "/usr/lib/R"

Par conséquent, le fichier Renviron.site se trouve (pour moi) dans /usr/lib/R/etc/.

Ouvrez simplement ce fichier et insérez la ligne:

TZ="UTC"

ou similaire.

5
Alex

Changer le fuseau horaire complet du système d'exploitation est un sledgehammer pour ce qui est fondamentalement juste destiné à changer les algorithmes de programmation .- Changer le fichier de démarrage ne se prête pas au partage de code via git.

Existe-t-il un autre moyen de procéder au moment de l'exécution du script pour la session R?

0
jrounds