2016-11-22 59 views
1

我有一個包含多列的數據框。奇數列包含的時間序列,偶數列中的數據:如何給數據框中的給定列添加時間

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」)爲「+」

如何使其工作?

回答

1

我們需要遍歷所有的列,然後做+

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

下也應努力(你在做什麼,稍作修改):

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