Нумерация элементов в векторе - PullRequest
3 голосов
/ 05 февраля 2012

Я хотел бы пронумеровать элементы вектора, присваивая '1' наименьшему элементу в векторе.Я знаю, как это сделать, но мое решение (код приведен ниже) кажется слишком сложным.Есть ли намного более простое решение?

В моем примере ниже есть 5 уникальных чисел в векторе 'данные'.Число 3 является наименьшим и должно быть присвоено число «1»;число 100 самое большое, и ему должно быть присвоено число 5совет.Я пытаюсь стать более эффективным с моим программированием.

Марк Миллер

Ответы [ 3 ]

8 голосов
/ 05 февраля 2012

Более компактная версия вашей программы.

dat <- c(5,8,12,12,8,3,100)
dat_sorted <- sort(unique(dat))
match(dat,dat_sorted)
4 голосов
/ 05 февраля 2012

Если вы используете числовые или целочисленные данные, вы можете использовать as.numeric(factor())

dat <- c(5,8,12,12,8,3,100)
as.numeric(factor(dat))

Кроме того, в качестве примечания следует избегать использования data в качестве имени переменной в R, так какэто уже встроенная функция.

3 голосов
/ 05 февраля 2012

Другая возможность:

> rank(data)
[1] 2.0 3.5 5.5 5.5 3.5 1.0 7.0

Вы можете увидеть аргумент "ties.method" для обработки связей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...