如何向数据框中的给定列添加时间

时间:2016-11-22 14:50:49

标签: r

我有一个包含多个列的数据框。奇数列包含时间序列,偶数列包含数据:

time1.in.s <- seq(0.010, 100, length.out = 100)
time2.in.s <- seq(0.022, 100, length.out = 100)
data1 <- seq(-10, 100, length.out = 100)
data2 <- seq(-25, 80, length.out = 100)

my.df <- data.frame(time1.in.s, data1, time2.in.s, data2)

(在现实生活中,我有更多专栏)。

现在时间是奇数列是相对的,以秒为单位。

我想为所有时间值添加一个给定的开始时间:

start.time <- strptime("2016-11-22_15-44-24",
                       format = "%Y-%m-%d_%H-%M-%S",
                       tz = "UTC")

我知道如何选择奇数列:

odd.indexes <- seq(1, ncol(my.df), 2)

但是为了将开始时间添加到相对时间,我做了一些天真的事......

my.df[, odd.indexes] <- start.time + my.df[, odd.indexes]

......这不起作用:

  

start.time + my.df [,odd.indexes]出错:   非数字参数   到二元运算符

     

另外:警告消息:不兼容的方法   (“+ .POSIXt”,“Ops.data.frame”)代表“+”

如何让它发挥作用?

2 个答案:

答案 0 :(得分:1)

我们需要循环遍历列,然后执行+

my.df[, odd.indexes] <- lapply(my.df[, odd.indexes], `+`, start.time)

答案 1 :(得分:1)

以下内容也应该有效(略微修改你正在做的事情):

my.df[, odd.indexes] <- as.data.frame(start.time + as.matrix(my.df[, odd.indexes]))