Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于条件语句向POSIXct添加时间_R - Fatal编程技术网

R 基于条件语句向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(

我有下面的数据框

如果时间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$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))