2016-12-12 26 views
0

我有下面的数据框基于条件语句向POSIXct添加时间

如果time3的小时数是12,那么我想给time2加1小时。当我这样做时,结果会返回数字而不是POSIXct。我该如何做这项工作?

dat = data.frame(
    time1 = as.POSIXct(c("2016-01-01 00:00:00")), 
    time2 =as.POSIXct(c("2016-02-02 10:10:10")) , 
    time3 =as.POSIXct(c("2016-02-02 12:30:30")) 
) 
dat 
class(dat$time1) 
class(dat$time2) 
dat$test = ifelse(as.numeric(format(dat$time3, format = "%H")) == 12, dat$time2+3600, dat$time1) 
dat 

回答

0

以下是一些备选:

1)替换

​​

2)算术

transform(dat, test = time1 + (as.POSIXlt(time3)$hour == 12) * (time2 - time1 + 3600)) 

2)dplyr :: if_else

dat %>% mutate(test = if_else(as.POSIXlt(time3)$hour == 12, time2 + 3600, time1))