Еще немного уточню для @ Sid29:
Функция метода python .cat.code
извлекает числовое представление уровней фактора. Эквивалент в R:
a <- factor(c("good", "bad", "good", "bad", "terrible"))
as.numeric(a)
[1] 2 1 2 1 3
Обратите внимание, что .cat.code
будет представлять NA
(или NaN
то же самое) как -1
, в то время как вышеупомянутое решение в R все еще сохраняет NA
и вывод будет просто NA
.
Редактировать: as.numeric(a)
лучше. Там обсуждается использование функции labels
внутри функции as.numeric
. См. Предупреждение в ?factor
:
В частности, числовое значение, применяемое к фактору, не имеет смысла и может происходить путем неявного принуждения. Чтобы преобразовать коэффициент f приблизительно в его исходные числовые значения, рекомендуется использовать as.numeric (уровни (f)) [f] и немного более эффективно, чем as.numeric (as.character (f)).
Есть некоторые аномалии, связанные с факторами, которые имеют уровень NA в качестве уровня. Рекомендуется использовать их экономно, например, только для целей табулирования.
Если у вас есть значение NA
, оно приведет все значения к NA
, поэтому причина использования labels
. Интересно, что c(a)
работает (см. Ответ @ 42 ниже).