Based on the code and data below how can I replace values in the date column with new values using ifelse
.
Error:
Warning message:
Problem while computing `date = ifelse(...)`.
ℹ longer object length is not a multiple of shorter object length
Data and code:
df = structure(list(id = c(1, 2, 3, 4, 5, 6, 7, 8), date = c("1/0/2000",
"1/0/2005", "1/0/2005", "1/0/2005", "1/0/2005", "1/0/2005", "1/0/2005",
"1/0/2005")), class = "data.frame", row.names = c(NA, -8L))
desired = structure(list(id = c(1, 2, 3, 4, 5, 6, 7, 8), date = c("01/01/2000",
"01/01/2005", "01/01/2005", "01/01/2005", "01/01/2005", "01/01/2005", "01/01/2005",
"01/01/2005")), class = "data.frame", row.names = c(NA, -8L))
df = df%>% mutate(date = ifelse(date == c("1/0/2000", "1/0/2005"),
c("01/01/2000", "01/01/2005"),
date)) # works if I run ifelse twice once for `1/0/2000` and once for `1/0/2005` without c()
>Solution :
You could use case_when
instead of ifelse
df %>% mutate(date = case_when(date == "1/0/2000" ~ "01/01/2000",
date == '1/0/2005' ~ "01/01/2005",
TRUE ~ date))
#> id date
#> 1 1 01/01/2000
#> 2 2 01/01/2005
#> 3 3 01/01/2005
#> 4 4 01/01/2005
#> 5 5 01/01/2005
#> 6 6 01/01/2005
#> 7 7 01/01/2005
#> 8 8 01/01/2005