偏移POSIXct轉換字符和UTC我有R中的以下數據:中的R
times <- c("2015-03-08 00:00:00", "2015-03-08 01:00:00", "2015-03-08 02:00:00", "2015-03-08 03:00:00")
utcOffsets <- c(2, 1, 1, 1)
mydata <- data.frame(time=times, utcOffset=utcOffsets)
在我的表中的UTCOFFSET列表示時區的每個數據值的偏移量。當我嘗試使用strptime函數將我的數據轉換爲POSIXct時,出現問題。由於某種原因,時間「2015-03-08 01:00:00」被轉換爲NA。
as.POSIXct(strptime(mydata$time, "%Y-%m-%d %H:%M:%S"))
[1] 「2015年3月8日00:00:00 MST」, 「2015年3月8日01:00:00 MST」 NA
[4]「2015年3月8日03: 00:00 MDT「
我懷疑夏令時的時間有問題,我必須在strptime函數中指定時區。如果時區是固定的爲我所有的數據,下面的代碼會爲我工作:
as.POSIXct(strptime(mydata$time, "%Y-%m-%d %H:%M:%S", tz="Europe/Prague"))
[1]「2015年3月8日00:00 CET」,「2015年3月8日01: 00:00 CET「」2015-03-08 02:00:00 CET「 [4]」2015-03-08 03:00:00 CET「
但是,在我的數據中,時區是在我的表的utcOffset列,例如utcOffset = 1表示GMT + 1或utcOffset = 2表示GMT + 2。當我試圖格式「GMT + N」使用時區代碼,我得到一個警告:
as.POSIXct(strptime(mydata$time, "%Y-%m-%d %H:%M:%S", tz="GMT+1"))
[1] "2015-03-08 00:00:00 GMT" "2015-03-08 01:00:00 GMT" "2015-03-08 02:00:00 GMT"
[4] "2015-03-08 03:00:00 GMT"
Warning messages:
1: In strptime(mydata$time, "%Y-%m-%d %H:%M:%S", tz = "GMT+1") :
unknown timezone 'GMT+1'
2: In as.POSIXct.POSIXlt(strptime(mydata$time, "%Y-%m-%d %H:%M:%S", :
unknown timezone 'GMT+1'
3: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'GMT+1'
我如何用我的表中的信息UTCOFFSET我的數據轉換爲POSIXct?
我會用' 「等/ GMT + 1」' –
感謝去,'as.POSIXct(strptime(MYDATA $時間,「%Y-%m-%d%H:%M:%S」,tz =「Etc/GMT + 1」))'在Linux和Windows上均可使用。但是,當我嘗試使用utcOffset列的值時:as.POSIXct(strptime(mydata $ time,「%Y-%m-%d%H:%M:%S」),tz = paste(「Etc/GMT +「,mydata $ utcOffset,sep =」「)))'我仍然收到'無效'tz'值'錯誤。 – jirikadlec2
將utcOffset添加到您的所有時間並將它們引用到UTC是什麼時候? POSIXct單位是秒,所以你會添加:'times.utc < - times + utcOffsets * 3600' – oshun