Один из вариантов - использовать пакет hash
:
> library(hash)
> sn <- sort(unique(A$id))
> g <- hash(1:length(sn),sn)
> h <- hash(sn,1:length(sn))
> A$id.new <- .get(h,A$id)
> head(A)
id x id.new
1 4566144 1.5164706 4
2 9404670 -1.5487528 10
3 5281052 0.5846137 5
4 455565 0.1238542 1
5 7883051 0.2159416 7
6 5514346 0.3796395 6
Предположим, что x это старый идентификатор, а вы хотите новый.
> x <- 7883051
> .get(h,as.character(x))
7883051
7
Предположим, у - новый идентификатор, а вы хотите старый.
> y <- 5
> .get(g,as.character(y))
5
5281052
(Иногда это может быть более удобным / прозрачным, чем использование факторов.)