2014-05-13 23 views
0

我遇到了使用R中的時間序列&區域的問題,但我無法完全弄清楚如何繼續。使用POSIXct時間序列更改時區,R

我有一個這樣的時間序列數據:

df <- data.frame( 
    Date  = seq(as.POSIXct("2014-01-01 00:00:00"), length.out = 1000, by = "hours"), 
    price = runif(1000, min = -10, max = 125), 
    wind  = runif(1000, min = 0, max = 2500), 
    temp  = runif(1000, min = - 10, max = 25) 
) 

現在,日期是UTC時間。我想子集/過濾數據,所以比如我今天得到的值(今天是2014年5月13日):

df[ as.Date(df$Date) == Sys.Date(), ] 

然而,當我這樣做,我得到的開頭數據:

2014-05-13 02:00:00 

而不是:

2014-05-13 00:00:00 

因爲在CEST時間,這是UTC時間兩個小時後,目前的IM。所以我嘗試更改數據:

df$Date <- as.POSIXct(df$Date, format = "%Y-%m-%d %H", tz = "Europe/Berlin") 

然而,這不起作用。我嘗試了各種各樣的變化,例如將其剝離爲字符,然後轉換等等,但是我已經將我的頭靠在牆上,並且我猜測這裏有一些簡單的缺失。

+0

退房此線程:https://stat.ethz.ch/pipermail/r-help /2006-March/101179.html –

+0

我試過閱讀這個鏈接和關於TZ的材料,但我仍然無法確定如何完全轉換這個系列。我能看到的是,它是依賴於系統的什麼工作?到目前爲止,我已經通過使用[This SO answer]中的'Sys.setenv(TZ ='GMT')'解決了它(http://stackoverflow.com/questions/6374874/how-to-change-the- default-timezone-in-r) – NoThanks

+1

如何使用'df [format(df $ Date,「%Y-%m-%d」)== Sys.Date(),]' – James

回答

1

要避免使用有這樣的時區的問題,使用format來獲得日期的字符表示:

df[format(df$Date,"%Y-%m-%d") == Sys.Date(), ]