#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 О, это отличное предложение и совет!!!