Как мога да променя номерацията в колона с R

Имам таблица с колона

X <- c(6,6,6,10,10,26,26,26,26,26,80)

Така че в X имаме 4 уникални числа.

Как мога да променя номерацията за всяка стойност? Например: 6,6,6 са на първо място, така че ги направете равни на 1; 10,10 са на второ място, което ги прави равни на 2 и т.н.


person user45415631    schedule 20.07.2014    source източник
comment
Тъй като нямаше отговор на въпроса ми тук, продължих напред и премахнах маркер data.table от някои от вашите Q, където изобщо не виждам никаква уместност. Бихте ли могли да не замърсявате етикетите? Благодаря.   -  person Arun    schedule 21.07.2014


Отговори (2)


Това ще даде малко по-различен отговор от този на Ричард, ако уникалните елементи не идват сортирани:

X <- c(6,6,6,10,10,26,26,26,26,26,80)
as.numeric(factor(X) )
 [1] 1 1 1 2 2 3 3 3 3 3 4

Сравнете:

> X <- c(80, 6,6,6,10,10,26,26,26,26,26)
> as.numeric(factor(X))
 [1] 4 1 1 1 2 2 3 3 3 3 3
> match(X, unique(X))
 [1] 1 2 2 2 3 3 4 4 4 4 4
person IRTFM    schedule 20.07.2014
comment
@DavidArenburg, което би било трудно да се определи, тъй като OP не спомена сортиране, а само позиция. match(x, unique(x)) съвпада с позициите независимо от това, което изглежда, че те питаха. - person Rich Scriven; 21.07.2014
comment
@RichardScriven, нямам нищо против отговора ти, това наистина е много хубаво решение, но в програмирането правилото е, че кодът с по-общо предназначение печели - person David Arenburg; 21.07.2014
comment
... touché .....хехе. Странно, дори не забелязах тази промяна, тъй като друг от отговорите ми беше приет почти едновременно. - person Rich Scriven; 21.07.2014

Това може да стане с match

> X <- c(6,6,6,10,10,26,26,26,26,26,80)
> match(X, unique(X))
# [1] 1 1 1 2 2 3 3 3 3 3 4
person Rich Scriven    schedule 20.07.2014
comment
Благодаря! Имам още един вектор, много подобен на X: y ‹- c(4,4,4,15,15,40,40,40,40,40,90) И трябва да заменя колона X с вектор Y. - person user45415631; 20.07.2014
comment
Добре, просто опитай data$X <- y - person Rich Scriven; 21.07.2014