Here is one method.
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df_key <- data.frame (Course.Name = c("Philosophy", "English", "Physics", "Geography"),
Course.Code = c("PHIL", "ENG", "PHYS", "GEO"))
df1 <- data.frame(Course.Name = c("Physics", "English", "Geography"),
Course.Code = c("", "ENG", ""))
df1 <- df1 |> inner_join(df_key,by="Course.Name") |>
mutate(Course.Code.x=ifelse(Course.Code.x=="",Course.Code.y,Course.Code.x)) |>
select(Course.Name,Course.Code=Course.Code.x)
df1
#> Course.Name Course.Code
#> 1 Physics PHYS
#> 2 English ENG
#> 3 Geography GEO
Created on 2022-01-31 by the reprex package (v2.0.1)