labs = letters[3:7]
vec = rep(1:5,2)
Как получить коэффициент, уровень которого «c» «d» «e» «f» «g»?R Как преобразовать числовое значение в коэффициент с предифицированными метками
labs = letters[3:7]
vec = rep(1:5,2)
Как получить коэффициент, уровень которого «c» «d» «e» «f» «g»?R Как преобразовать числовое значение в коэффициент с предифицированными метками
Вы можете сделать что-то вроде этого:
labs = letters[3:7]
vec = rep(1:5,2)
factorVec <- factor(x=vec, levels=sort(unique(vec)), labels = c("c", "d", "e", "f", "g"))
Я отсортировали unique(vec)
, таким образом, чтобы результаты последовательны. unique()
вернет уникальные значения, основанные на первом вхождении элемента. Указав заказ, код становится более надежным.
Также, указав уровни и метки обоих, я думаю, что код станет более читаемым.
EDIT
Если вы смотрите в документации с использованием ?factor
, вы найдете:
уровни
дополнительный вектор значений (в виде строк символов), что х может быть принято , По умолчанию используется уникальный набор значений, сделанных as.character (x), отсортированный в возрастающий порядок x. Обратите внимание, что этот набор можно указать как меньший, чем sort (unique (x))
Итак, вы можете заметить, что внутри самой факторной фракции происходит некоторая сортировка. Но я считаю, что нужно добавить информацию о уровнях, чтобы сделать код более удобочитаемым.
hmm ... Как насчет только 'factor (vec, labels = labs)'? –
Какой элемент лаборатории назначен тому элементу исходного вектора, не будет ясным, если уровни не указаны. В своей работе я совершил эту ошибку и стал мудрее после того, как ее поймали с поличным, когда мой начальник поймал эту мою ошибку. –
Кумар, спасибо за помощь. Я согласен с тем, что просмотр «уровней» и «ярлыков» избавил бы меня от путаницы, которая заставила меня задать этот довольно простой вопрос, но (удивительно?) В решении Дэвида Аренбурга маркировка разобралась в порядке, даже если вы испортили «vec», чтобы первые появления уникальных значений НЕ отсортировались. – Amitai