Вот несколько подходов.Пакеты не используются.
1) match Использование DF
, которое воспроизводимо показано в примечании, в конце соответствует каждому элементу от column1
до LETTERS[1:4]
и 5, если не найдено.Вычтите 1 из этого.
transform(DF, NOIA_NUM = match(column1, LETTERS[1:4], nomatch = 5) - 1)
, давая:
column1 NOIA_NUM
1 A 0
2 C 2
3 B 1
4 D 3
5 E 4
2) переключатель Другая возможность заключается в использовании switch
:
transform(DF, NOTA_NUM = sapply(column1, switch, A = 0, B = 1, C = 2, D = 3, 4))
3) арифметика Используется арифметическое выражение, которое оценивается до требуемых значений:
transform(DF, NOTA_NUM = (0-4) * (column1 == "A") +
(1-4) * (column1 == "B") +
(2-4) * (column1 == "C") +
(3-4) * (column1 == "D") +
4)
Примечание
DF <- data.frame(column1 = c("A", "C", "B", "D", "E"), stringsAsFactors = FALSE)