We can use data.table
to create a new column
library(data.table)
setDT(df1)[date_vector1>= date_vector2, newcol := date_vector1]
df1
# date_vector1 date_vector2 newcol
#1: 2017-05-29 2017-05-13 2017-05-29
#2: 2017-05-22 2017-05-26 <NA>
#3: 2017-05-26 2017-05-18 2017-05-26
#4: 2017-05-28 2017-05-14 2017-05-28
#5: 2017-05-25 2017-05-27 <NA>
If both these are vectors are not a variable in a data.frame/data.table, then do
i1 <- date_vector1>= date_vector2
newvector <- date_vector2
newvector[i1] <- date_vector1[i1]
newvector[!i1] <- NA
newvector
#[1] "2017-05-29" NA "2017-05-26" "2017-05-28" NA
It is better not to use ifelse
on Date
as dates are stored as integers it will coerce to integer
class and we may have to convert it back to Date
class again with as.Date(..., origin = '1970-01-01')
data
set.seed(24)
date_vector1 <- sample((Sys.Date() - 1:10), 5, replace = FALSE)
date_vector2 <- sample((Sys.Date() - 1:20), 5, replace = FALSE)
df1 <- data.frame(date_vector1, date_vector2)