2014-11-02 41 views
0

我在我的數據集中有兩列是因子,形式爲「10may2010 5p.m.至7p.m.」將因子轉換爲日期和時間R

我希望R讀取上述因子作爲日期/時間對象。

接下來,我想知道,如果日期 - 時間欄1中的日期時間前2列

謝謝!

+0

您的值不是任何標準的日期/時間格式。你真的有一個時間範圍,基地R沒有本地支持的數據類型。您必須將其分成開始時間/結束時間對。同樣,由於這看起來不像標準格式,因此您必須自己解析這些值才能完成必要的工作。 (2位數日期,3個字符月份縮寫,4位數年份,空間,小時(1-12),(上午/下午),空間「到」空間,小時(1 -12),(am/pm))? – MrFlick 2014-11-03 01:31:19

+0

是的,除了12pm被編碼爲「noon」 – Zslice 2014-11-03 01:40:08

回答

0

我不確定這是否是將該字符串解析爲序列的正確方法,但它看起來工作正常,應該讓您朝着正確的方向前進(並且我也學到了一點)。

x <- gsub("[.]|to ", "", "10may2010 5p.m. to 7p.m.") 
s <- strsplit(x, "\\s+")[[1]] 
dts <- strptime(paste(s[1], s[-1]), "%d%b%Y %I%p") 
# [1] "2010-05-10 17:00:00 PDT" "2010-05-10 19:00:00 PDT" 
seq(dts[1], dts[2], by = "hour") 
# [1] "2010-05-10 17:00:00 PDT" "2010-05-10 18:00:00 PDT" 
# [3] "2010-05-10 19:00:00 PDT" 

也看看lubridate區間類,因爲它可能是你想要的。

library(lubridate) 
interval(dts[1], dts[2]) 
# [1] 2010-05-10 17:00:00 PDT--2010-05-10 19:00:00 PDT 
相關問題