2015-03-31 179 views
3

我有一個包含兩列日期和時間的數據集,我想將它轉換爲包含日期和時間的列,例如:"2014-02-01 13:04:05"將日期和時間轉換爲日期+時間戳

我知道這樣做的代碼是:

as.POSIXct(paste(data$Date, data$Time),format="%Y-%m-%d %H:%M:%S") 

這將返回,因爲數據集中的問題有很多正確的價值觀,但也NA。 我的問題駐留在我的數據集中,將data$Time作爲因子,時間範圍從02:00:00 - 25:59:00

所以我想要的是切斷data$Time,所以如果它超過24:00:00它會在日期中添加另一天並顯示正確的時間。

例如: "2014-01-31 25:30:00"將變得"2014-02-01 01:30:00"

回答

1

使用hms從lubridate:

library(lubridate) 
x <- "2014-01-31 25:30:00" # input 

as.Date(x) + hms(sub(".* ", "", x)) 

捐贈:

[1] "2014-02-01 01:30:00 UTC" 
+0

謝謝!有用! 欣賞它 – KhalidN 2015-03-31 13:53:29

0

如果範圍從2:00變爲25:59,則意味着存在來自範圍00:002小時差 - 23:59 ..那你爲什麼不從你的約會中取回兩個小時?例如,「2014-01-31 25:30:00」將成爲「2014-01-31 23:30:00」,不是嗎?

如果這是你想要什麼,我想這應該工作:

my.lt < - as.POSIXlt( 「2014年3月9日14:00:00」)

我。 LT $小時< - my.lt $小時 - 2

+0

不完全是,我的問題是,你不能只是減去2小時內從時間,但應該改天添加到日期,這樣的例子應該這樣做: 「2014-01- 31 25:30:00「將成爲」2014-02-01 01:30:00「 – KhalidN 2015-03-31 12:11:00

+0

那麼也許你可以使用my.lt $ mday? – celineu 2015-03-31 12:18:42

+0

我完全不理解? 我有超過500.000行,所以它不是我可以手動執行的。 所以我認爲可以創建一個LOGIT向量來說明時間是否超過24:00:00小時,然後會說TRUE或FALSE。 然後使用該LOGIT向量在其爲TRUE時添加另一天。 你能幫我嗎? – KhalidN 2015-03-31 12:22:54