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)