Есть ли способ в R ранжировать категориальную переменную (символов) в ранжированные порядковые данные? - PullRequest
0 голосов
/ 25 марта 2019

У меня есть список строк символов, скажем alphabets = c(a, b, c, d,..., z) и я хотел бы получить индекс этого списка в виде нового столбца в data.frame.

например. (b, a, c, d, e, g) даст (2, 1, 3, 4, 5, 7).

Ответы [ 2 ]

1 голос
/ 25 марта 2019

Решение, которое вам нужно, - преобразовать вектор символов в коэффициент:

alphabets = c("b", "a", "c", "d", "e", "g")
#convert to class factor with the order define by the levels option
alphabets<-factor(alphabets, levels=letters)

#display the values
as.numeric(alphabets)
#[1] 2 1 3 4 5 7
1 голос
/ 25 марта 2019

Это случай для match

x <- c("b", "a", "c", "d", "e", "g")

match(x, letters)
#[1] 2 1 3 4 5 7

или sapply с grep возвращением именованного int вектора

sapply(x, grep, letters)
#b a c d e g
#2 1 3 4 5 7

Два комментария:

  1. «У меня есть список строк символов» Будьте точны с именами классов объектов!alphabets = c("a", "b", "c", "d") - это вектор character, а не list.
  2. letters - это встроенная константа, которая возвращает 26 строчных букв (латинского алфавита) в виде вектора character.Подробнее см. ?letters.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...