Данные
df <- read.table(text="pre_schwa
IY0
SH
Z", header=TRUE, stringsAsFactors=FALSE)
Я рекомендую преобразовать ваши отдельные векторы в data.frame через
vowels <- c("AY1", "ER0", "IY0", "IY1", "UW2")
sonorants <- c("M", "N", "R", "Y", "ZH", "W")
fricatives <- c("F", "S", "SH", "TH", "V", "Z")
stops <- c("B", "CH", "D", "G", "JH", "K", "P", "T")
patterns <- c("vowels", "sonorants", "fricatives", "stops")
df2 <- stack(mget(patterns))
В качестве альтернативы, как указано в MrFlick, вы можете использовать lattice::make.groups(...)
df2 <- lattice::make.groups(vowels, sonorants, fricatives, stops) %>%
dplyr::rename(pre_schwa=data, sonority_grouped=which)
Затем вы можете использовать dplyr::left_join
для получения вашего результата
ans <- dplyr::left_join(df, df2, by=c("pre_schwa" = "values"))
# pre_schwa ind
# 1 IY0 vowels
# 2 SH fricatives
# 3 Z fricatives
С ответом MrFlick используйте
ans <- dplyr::left_join(df, df2)