R向整列添加特定(不同)的时间量

时间:2015-07-01 14:39:40

标签: r dataframe posixct

我在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") })

我想创建一个名为&#39; end&#39;的第三列,它将按照开始时间后的小时数计算。我很确定我的时间是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...

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分:2)

您只需将dur*3600添加到数据框的start列即可。例如。有一个日期:

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"