Есть ли способ кодировать символьные переменные в числовые переменные в полном наборе данных

#r #match

#r #совпадение

Вопрос:

Я пытаюсь преобразовать то, как кодируются мои современные группы.

В настоящее время они находятся в символьном формате «240009T2017», «240009T2018», «240056P2018», «240108T2016» примерно для 40 групп. Я хотел бы перекодировать их вместо этого как 1,2,3,4, …

Я нашел часть своего ответа от «R: Кодировать символьные переменные в числовые

 x <- c("240009T2017", "240009T2018", "240056P2018", "240108T2016")
dat$hyn <- match(x, unique(x))
  

Но я не уверен, как преобразовать его для всего набора данных. В идеале, каждый раз, когда «240009T2017» появляется в столбце современной группы, он преобразует его в 1.

Спасибо!

Ответ №1:

Вы могли бы сделать трюк для этого с коэффициентом, который позаботится о дублированных значениях. Здесь код:

 #Data
x <- c("240009T2017", "240009T2018", "240056P2018", "240108T2016","240009T2017")
#Conversion to factor
y <- as.numeric(as.factor(x))
  

Выходные данные:

 x
[1] "240009T2017" "240009T2018" "240056P2018" "240108T2016" "240009T2017"

y
[1] 1 2 3 4 1
  

Комментарии:

1. Я проголосовал, но в моих тестах OP match(x, unique(x)) на порядок быстрее. (Множественное число зависит от доли уникальных значений в x , чем меньше, тем меньше разница).

2. @RuiBarradas О, это отличное предложение и совет!!!