45
我有多個測量列表。在每個列表中,timestramp都被格式化爲一個字符串(「2009-12-24 21:00:07.0」),並且我知道列表中的每個測量都被分隔5秒。 我想將所有數據合併到R中的一個巨大的data.frame中。之後,我希望能夠輕鬆訪問兩個測量的時差,所以我可能應該將數據轉換爲與字符不同的數據。處理R中的時間戳
我應該使用哪種格式來存儲時間?我應該使用某些包中的某種時間格式嗎?
我有多個測量列表。在每個列表中,timestramp都被格式化爲一個字符串(「2009-12-24 21:00:07.0」),並且我知道列表中的每個測量都被分隔5秒。 我想將所有數據合併到R中的一個巨大的data.frame中。之後,我希望能夠輕鬆訪問兩個測量的時差,所以我可能應該將數據轉換爲與字符不同的數據。處理R中的時間戳
我應該使用哪種格式來存儲時間?我應該使用某些包中的某種時間格式嗎?
您希望(標準)從基礎R POSIXt
類型可以在「緊湊的形式」可以了作爲POSIXct
(其本質上是一個雙代表從epoch分數秒)或長形式中POSIXlt
(其包含子-elements)。很酷的事情是,算術等都是在這個定義 - 見help(DateTimeClasses)
簡單的例子:
R> now <- Sys.time()
R> now
[1] "2009-12-25 18:39:11 CST"
R> as.numeric(now)
[1] 1.262e+09
R> now + 10 # adds 10 seconds
[1] "2009-12-25 18:39:21 CST"
R> as.POSIXlt(now)
[1] "2009-12-25 18:39:11 CST"
R> str(as.POSIXlt(now))
POSIXlt[1:9], format: "2009-12-25 18:39:11"
R> unclass(as.POSIXlt(now))
$sec
[1] 11.79
$min
[1] 39
$hour
[1] 18
$mday
[1] 25
$mon
[1] 11
$year
[1] 109
$wday
[1] 5
$yday
[1] 358
$isdst
[1] 0
attr(,"tzone")
[1] "America/Chicago" "CST" "CDT"
R>
至於閱讀它們,請參閱help(strptime)
至於區別,太容易了:
R> Jan1 <- strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
R> difftime(now, Jan1, unit="week")
Time difference of 51.25 weeks
R>
最後,zoo package是一個非常靈活和充分記錄容器的矩陣與相關的日期/時間e指數。
謝謝。 爲R功能命名的人是殘酷的。我的意思是你應該怎麼猜測POSIXlt與時間有什麼關係? – Christian
但'help.search(「date time」)'會發現相鄰的函數。 –
@DirkEddelbuettel是的,這很有幫助。無論如何,這是不好的命名的藉口。代碼越可讀,不需要文檔就越好。 – nandinga