Recoding with keeping the same variables (adjusting only some)

Hi,
I have this simple question.
Having this df:

HMDE.Service.model.info <- data.frame(
  stringsAsFactors = FALSE,
               URN = c("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg"),
        VIN.M.Long = c("xxx", "xxx", "yyy", "yyy", "yyy", "zzz", "abc"),
         ModelYear = c(2008, 2015, 2005, 2011, 2020, 2018, 2019)
)

I would like to change some descriptions of VIN.M.Long depending on ModelYear. I did this:

library(dplyr)
HMDE.Service.model.info <- HMDE.Service.model.info %>%
  mutate(
    VIN.M.Long = case_when(
      VIN.M.Long=='xxx' & ModelYear < 2014 ~ 'xxx (2007-13)',
      VIN.M.Long=='yyy' & ModelYear < 2006 ~ 'yyy (2005-11)',
      VIN.M.Long=='yyy' & ModelYear >= 2006 & ModelYear < 2015 ~ 'yyy (2012-15)'
    )
  )

...but it recodes only models mentioned in the code.
How can I keep all other VIN.M.Long unchanged?

Can you help?
I am sure this is something very simple!

you need a condition that if the previous checked conditions have not registered, will register, TRUE is a good test that guarantees this.

HMDE.Service.model.info %>%
  mutate(
    VIN.M.Long = case_when(
      VIN.M.Long=='xxx' & ModelYear < 2014 ~ 'xxx (2007-13)',
      VIN.M.Long=='yyy' & ModelYear < 2006 ~ 'yyy (2005-11)',
      VIN.M.Long=='yyy' & ModelYear >= 2006 & ModelYear < 2015 ~ 'yyy (2012-15)',
      TRUE ~ VIN.M.Long
    )
  )

Thank you very much! That was simple.
Sorry for adjusting my initial request but I have added one variable as one little issue appeared in my real, big data:

model.info <- data.frame(
  stringsAsFactors = FALSE,
               URN = c("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg"),
                ModelLong = c("xxx","xxx","yyy","yyy","yyy","zzz","abc"),
        VIN.M.Long = c("xxx", "xxx", "yyy", "yyy", "yyy", "zzz", NA),
         ModelYear = c(2008, 2015, 2005, 2011, 2020, 2018, 2019)
)
library(dplyr)
model.info <- model.info %>%
  mutate(
    VIN.M.Long = case_when(
      VIN.M.Long=='xxx' & ModelYear < 2014 ~ 'xxx (2007-13)',
      VIN.M.Long=='yyy' & ModelYear < 2006 ~ 'yyy (2005-11)',
      VIN.M.Long=='yyy' & ModelYear >= 2006 & ModelYear < 2015 ~ 'yyy (2012-15)',
      TRUE ~ VIN.M.Long
    )
  )

What can I add to the code to copy ModelLong info to VIN.M.Long if VIN.M.Long is blank?
Basically, VIN.M.Long for record ggg should be the same as ModelLong.

Thank you

one option is to use coalese()

 mutate(
    VIN.M.Long = case_when(
      VIN.M.Long=='xxx' & ModelYear < 2014 ~ 'xxx (2007-13)',
      VIN.M.Long=='yyy' & ModelYear < 2006 ~ 'yyy (2005-11)',
      VIN.M.Long=='yyy' & ModelYear >= 2006 & ModelYear < 2015 ~ 'yyy (2012-15)',
      TRUE ~ VIN.M.Long
    ) %>% coalesce(ModelLong)
  )

Perfect!!! Thank you :grinning: