Вы можете использовать case_when
:
library(dplyr)
df %>%
mutate(v3 = case_when(v1 == 'a' ~ 'science',
v1 == 'b' ~ 'maths',
v1 == 'c' ~ 'english'))
# v1 v2 v3
#1 a 1 science
#2 b 2 maths
#3 c 3 English
#4 a 1 science
#5 c 3 english
Или создать ссылочный фрейм данных и использовать merge
:
ref_df <- data.frame(v1 = c('a', 'b', 'c'),v3 = c('science', 'maths', 'english'),
stringsAsFactors = FALSE)
merge(df, ref_df, by = 'v1')
data
df <- structure(list(v1 = structure(c(1L, 2L, 3L, 1L, 3L), .Label = c("a",
"b", "c"), class = "factor"), v2 = c(1L, 2L, 3L, 1L, 3L)),
class = "data.frame", row.names = c(NA, -5L))