Превратите вектор символов в числовой вектор с помощью меток

Это кажется чрезвычайно простым, но я не могу найти эффективный способ сделать это:

У меня есть вектор символов

s<-c("LabelB","LabelX", "LabelE", "LabelE", "LabelX", "LabelD", "LabelB")

Мне нужен числовой вектор, в котором числа можно интерпретировать по порядку.

      library(haven)
library(labelled)
labelledS<-c(1,4,3,3,4,2,1)

с метками, т.е. метки сохраняются с

      Labels
value    label
1         LabelB
2         LabelD
3         LabelE
4         LabelX

Я открыт для использования других пакетов, кроме Haven или маркированных. Поскольку у меня много уровней и меток, я просто хочу убедиться, что это делается без перекодирования переменной вручную.

Я пробовал такие вещи, как:

      MyLevels <- c(1,2,3,4)
names(MyLevels) <- levels(as.factor(s))
labelledS <- labelled(s, as.factor(MyLevels))

Однако здесь значения переменных остаются строками, тогда как я хочу, чтобы они были целыми числами.

Большое спасибо за Вашу помощь!

1 ответ

Вот правильный способ сделать это сhaven,

      v1 <- as.integer(factor(s))
levels = levels(factor_s)
values = seq_along(levels)

res <- haven::labelled(v1, setNames(object = values, nm = levels))

res
<labelled<integer>[7]>
[1] 1 4 3 3 4 2 1

Labels:
 value  label
     1 LabelB
     2 LabelD
     3 LabelE
     4 LabelX
Другие вопросы по тегам