2
votes

I have a table like so:

dtab<-data.table(Arr.Dep=c("A","D"),
       time=c("2017-05-01 04:50:00","2017-05-01 04:55:00"))

dtab[,time:=parse_date_time(dtab$time, c("%y-%m-%d %H:%M%S"))]

Operations on the date and time column seem successful:

dtab[,time2:=time+2]

But if I try to run an ifelse statement, the POSIXct format goes back to numeric and I seem to be unable to bring it back to date and time.

dtab[,time3:=ifelse(dtab[,Arr.Dep]=="A",dtab[,time]+2,"hello")]

I saw the issue has already been raised: R- date time variable loses format after ifelse

Unfortunately it's not of great help to me, as when I try to follow the example - adding 2 seconds rather than replacing with NA as in the OP -, I hit an error anyway. Any help?

1
If your third argument in ifelse would also be a date, e.g. if_else(Arr.Dep =="A", time +2, time), then the dplyr function if_else solves the problem. But this function is just useable, if the second and third argument have the same type, e.g. date.J_F
Yes! It works, thanks a lot.La Machine Infernale

1 Answers

0
votes

Use library(lubridate) and add time dtab$time2 <- dtab$time2 + seconds(2). With this method, the format does not change.