Проблема в том, что вы пытаетесь вернуть объекты двух разных классов в ifelse
.Если вы проверите
str(df)
#'data.frame': 3 obs. of 2 variables:
# $ date1: Date, format: "2019-07-07" "2019-02-11" "2019-05-22"
# $ day : chr "Sun" "Mon" "Wed"
Итак, date1
относится к классу "Дата", а остальная часть в вашем ifelse
содержит 1, которое является числовым.Так что теперь, чтобы привести их обоих к одному и тому же классу, R делает
as.numeric(as.Date("2019-07-07"))
#[1] 18084
Даты в любом случае представляются внутри как числа.Например,
as.Date(18084, origin = "1970-01-01") #would give
#[1] "2019-07-07"
Возможно, вам понадобится
library(dplyr)
df %>% mutate(newdate = ifelse(day == "Sun", as.character(date1), "1"))
# date1 day newdate
#1 2019-07-07 Sun 2019-07-07
#2 2019-02-11 Mon 1
#3 2019-05-22 Wed 1
, но это изменит newdate
на класс символов.