2011-06-16 25 views
32

Estoy trabajando con series temporales en R. Todas mis series de tiempo están definidas en la zona horaria UTC, pero si imprimo una fecha siempre se hace en la zona horaria CET/CEST. ¿Sabes cómo podría cambiar ese parámetro predeterminado?¿Cómo cambiar la zona horaria predeterminada en R?

+0

¿Has leído '? Timezone' y has probado algo en él? –

+0

Tuve un problema similar y necesitaba una solución rápida. Usé el Jupyter para R.Está configurado probablemente para una zona horaria UTC. – user3624251

Respuesta

46

Otra manera de hacerlo , sin cambiar todo el tiempo de la computadora está utilizando el comando setenv de esta manera: Sys.setenv(TZ='GMT')

+1

En una Mac, cuando restablece la sesión R, parece que se va y vuelve a "" – Jas

5

¿Qué sistema operativo?

En general, consulte help(Startup) ya que puede establecer valores a través de .Renviron y su variante para todo el sitio.

Pero probablemente debas configurar esto para tu máquina como un todo, lo que bajo Linux puede alterar el archivo /etc/timezone, y en Windows establecerías una variable de entorno para todo el sistema TZ.

Por último, si la pantalla con formato de fechas y el tiempo muestra CET/CEST, ya que esto puede configurarse como un defecto del sistema y su pregunta realmente es cómo establecer sus tiempos UTC correctamente en sus objetos R.

+0

Cambié mi configuración de Windows. Y también tuve que cambiar en R la variable de entorno TZ TZ de esta manera: 'TZ =" UTC "'. Gracias por la ayuda. –

10

ver este buen artículo sobre el cambio de zona horaria en I:

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

Poco (en caso de que el enlace no estará disponible en el futuro):

# 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" 
2

Encontré la respuesta de @ Dirk muy útil para Ubuntu, así que pensé en ampliarlo.

De help(Startup) vemos que las variables de entorno se establecen por el archivo Renviron.site:

A menos --no-environ se le dio en la línea de comandos, R busca de archivos del sitio y del usuario a un procedimiento para establecer las variables de entorno . El nombre del archivo de sitio es el indicado por la variable de entorno R_ENVIRON; si esto no está definida, 'R_HOME/etc/Renviron.site' se utiliza

Podemos encontrar el camino a R_HOME mediante el uso de la función R.home(), que en mi caso regresa:

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

Por lo tanto, el archivo Renviron.site se encuentra (para mí) en /usr/lib/R/etc/.

Basta con abrir este archivo, e insertar la línea:

TZ="UTC" 

o similar.

+0

Esta es una respuesta increíble a "permanentemente" establecer la zona horaria en R. Pero lo que no entiendo: ¿por qué es? incluso mostrando este mensaje? Mi R: v3.4.2 en macOS High Sierra. –

-1

-Cambio de toda la zona horaria del sistema operativo es un mazo para lo que básicamente se pretende cambiar los algoritmos de programación. -Cambiar el archivo de inicio no se presta para compartir código a través de git.

¿Hay alguna otra manera de hacerlo en el tiempo de ejecución del script para la sesión R?

+1

[Utilice el botón * Publicar respuesta * solo para respuestas reales] (// meta.stackoverflow.com/q/92107). Si tiene una pregunta ** diferente **, hágalo haciendo clic en el botón [Preguntar pregunta] (// stackoverflow.com/questions/ask). Si tiene exactamente el mismo problema que este, cuando tenga suficiente reputación puede [resucitar la pregunta] (// stackoverflow.com/privileges/vote-up) o [agregar una recompensa sobre él] (// stackoverflow.com/ayuda/recompensa). –

Cuestiones relacionadas