R 基于条件语句向POSIXct添加时间
我有下面的数据框 如果时间3的小时数是12,那么我想在时间2上加1小时。当我这样做时,结果返回数值,而不是POSIXct。我怎样才能做到这一点R 基于条件语句向POSIXct添加时间,r,R,我有下面的数据框 如果时间3的小时数是12,那么我想在时间2上加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 = 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
以下是一些备选方案: 1)更换
transform(dat, test = replace(time1, as.POSIXlt(time3)$hour == 12, time2 + 3600))
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))