我從Excel導入數據,然後嘗試操作R中的日期和時間,它給了我這樣的頭痛。在Excel文件中,一列包含日期和時間,另一列包含同一天的不同時間。 R中的數據基本上是這樣的例子:在R中相互轉換POSIXct和數字
mydata <- data.frame(DateTime1 = as.POSIXct(c("2014-12-13 04:56:00",
"2014-12-13 09:30:00",
"2014-12-13 11:30:00",
"2014-12-13 13:30:00"),
origin = "1970-01-01", tz = "GMT"),
Time2 = c(0.209, 0.209, 0.715, 0.715))
我想在日期和第二時POSIXct格式的新列,我不能得到那個工作。我試過了:
mydata$DateTime2 <- as.POSIXct(as.numeric(as.Date(mydata$DateTime1)
+ mydata$Time2), origin = "1970-01-01",
tz = "GMT")
但這給了我日期和時間接近1/1/1970。
這是比較繞口,但有一點,在這我也嘗試過其他similiar情況已工作是:
library(lubridate)
mydata$DateTime2 <- ymd_hms(format(as.POSIXct(as.Date(mydata$DateTime1) +
mydata$Time2,
origin = "1899-12-30", tz = "GMT")))
但給我的日期和時間,到8小時關閉。這個時間差異使我認爲問題是自太平洋標準時間以來的時區,但我在設置了它在輸入數據和嘗試轉換時均爲GMT!是什麼賦予了?由於日光節約時間的複雜性,我不願意爲所有事情增加8小時。
真的,我在這裏列出的兩個嘗試似乎都存在相互轉換的問題,也就是說,如果您從POSIXct對象開始並將其轉換爲數字,然後再將其轉換回POSIXct,則應該返回你在哪裏開始和你不要。同樣,如果您以時區格林威治時間開始,然後添加也設置爲GMT時區的內容,那麼您不應該在神祕地轉換到系統時區的地方出現問題。
建議?
在轉換之前和之後檢查'unclass(DateTime1)'。它應該是相同的基本整數(技術上'數字')之前和之後。如果是這樣,這只是設置正確的時區/原點的問題。 – MichaelChirico
謝謝你的建議,但是我沒有看到包含'unclass(...'和不包括它)之間的區別 – LauraS
我可能會誤解,但爲什麼不能直接將'Time2'添加到'DateTime1 '我不確定'Time2'的單位,但假設它是幾天,只是爲了說明。然後,'mydata $ DateTime2 = mydata $ DateTime1 + mydata $ Time2 * 24 * 60 * 60'(因爲POSIXct是因此我們將'Time2'轉換爲秒) – eipi10