R向整个列添加特定(不同)的时间
R add specific (different) amounts of times to entire column
我在 R 中有一个 table,例如:
start duration
02/01/2012 20:00:00 5
05/01/2012 07:00:00 6
etc... etc...
我通过从 Microsoft Excel 导入一个 table 来做到这一点,它看起来像这样:
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") })
我想创建一个名为 'end' 的第三列,它将计算为开始时间之后的小时数。我很确定我的时间是一个 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...
使用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))
您只需将 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"
我在 R 中有一个 table,例如:
start duration
02/01/2012 20:00:00 5
05/01/2012 07:00:00 6
etc... etc...
我通过从 Microsoft Excel 导入一个 table 来做到这一点,它看起来像这样:
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") })
我想创建一个名为 'end' 的第三列,它将计算为开始时间之后的小时数。我很确定我的时间是一个 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...
使用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))
您只需将 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"