2015-07-01 33 views
0

我有R A表所示:r添加的時間特定的(不同的)達整列

start    duration 
02/01/2012 20:00:00 5 
05/01/2012 07:00:00 6 
etc...    etc... 

我得到這個通過導入從Microsoft Excel表格,看上去是這樣的:

date  time  duration 
2012/02/01 20:00:00 5 
etc... 

我然後通過運行下面的代碼合併的日期和時間列:

d.f <- within(d.f, { start=format(as.POSIXct(paste(date, time)), "%m/%d/%Y %H:%M:%S") }) 

我想創建第三個關口被稱爲'結束',這將被計算爲開始時間之後的小時數。我很確定我的時間是一個POSIXct向量。我已經看到如何操縱一個日期時間對象,但是我怎麼能夠爲整個列做這件事?

預期的結果應該是這樣的:

start    duration end 
02/01/2012 20:00:00 5   02/02/2012 01:00:00 
05/01/2012 07:00:00 6   05/01/2012 13:00:00 
etc...    etc... etc... 
+0

這個問題應該有R代碼,所以我們知道你是如何引用你的數據等等。請記住你的下一個問題 –

回答

5

使用lubridate

> library(lubridate) 
> df$start <- mdy_hms(df$start) 
> df$end <- df$start + hours(df$duration) 
> df 
#    start duration     end 
#1 2012-02-01 20:00:00  5 2012-02-02 01:00:00 
#2 2012-05-01 07:00:00  6 2012-05-01 13:00:00 

數據

df <- structure(list(start = c("02/01/2012 20:00:00", "05/01/2012 07:00:00" 
), duration = 5:6), .Names = c("start", "duration"), class = "data.frame", row.names = c(NA, 
-2L)) 
2

您可以簡單地將數據幀的dur*3600start列。例如。有一個日期:

start = as.POSIXct("02/01/2012 20:00:00",format="%m/%d/%Y %H:%M:%S") 
start 
[1] "2012-02-01 20:00:00 CST" 
start + 5*3600 
[1] "2012-02-02 01:00:00 CST" 
相關問題