如何更改R中的默认时区? 我正在处理时间序列。我所有的时间序列都是以UTC时区定义的,但是如果我打印一个日期,它总是在CET / CEST时区完成。
答案 0 :(得分:66)
另一种方法是在不改变整个计算机时间的情况下使用setenv命令:Sys.setenv(TZ='GMT')
答案 1 :(得分:11)
请参阅这篇关于在R中更改时区的好文章:
http://blog.revolutionanalytics.com/2009/06/converting-time-zones.html
很快(如果链接将来不可用):
# 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 :(得分:8)
什么操作系统?
一般情况下,请参阅help(Startup)
,因为您可以通过.Renviron
及其网站范围的变体来设置值。
但您可能应该为整个机器设置此项,在Linux下可能会更改文件/etc/timezone
,而在Windows上则设置系统范围的环境变量TZ
。
最后,如果日期和时间的格式化显示显示为CET / CEST,则可能已将其设置为系统默认值,您的问题实际上是如何在R对象中正确设置UTC时间
答案 3 :(得分:5)
我发现@Dirk的答案对Ubuntu非常有用,所以我想我会扩展它。
从help(Startup)
我们看到环境变量由Renviron.site
文件设置:
除非在命令行上给出了--no-environ,否则R搜索要处理的站点和用户文件以设置环境变量。站点文件的名称是环境变量R_ENVIRON指向的名称;如果未设置,则使用“R_HOME / etc / Renviron.site”
我们可以使用函数R_HOME
找到R.home()
的路径,在我的例子中返回:
> R.home()
[1] "/usr/lib/R"
因此,Renviron.site
中找到/usr/lib/R/etc/
文件(对我而言)。
只需打开此文件,然后插入以下行:
TZ="UTC"
或类似。
答案 4 :(得分:0)
- 整个操作系统时区是一个大锤,基本上只是为了改变编程算法。 - 更改启动文件并不适合通过git共享代码。
在R会话的脚本运行时是否有另一种方法可以执行此操作?