on 06/27/2008 01:41 PM Agustin Lobo wrote:
Hi!
Given a vector (or a factor within a df),i.e. v1 <- c(1,1,1,2,3,4,1,10,3)
and a dictionary
cbind(c(1,2,3),c(1001,1002,1003))
is there a function (on the same line than recode() in car)
to get v2 as c(1001,1001,1001,1002,1003,4,1001,10,1003) ?
I'm using myself a function based on match() since
long ago (I think that thanks to advice by Prof. B. Ripley),
but would like to know if there is an standard function (i.e., like
recode()). What I'm using is:
"reclas" <- function(v, origen, imagen, directo = T, resto=1)
{
if(directo == F) {
aux <- origen
origen <- imagen
imagen <- aux
}
m <- match(v, origen, 0)
#print("match finished")
if(resto==0) v <- v*0
v[m > 0] <- imagen[m]
v
}
Agus
v1 <- c(1,1,1,2,3,4,1,10,3)
dic <- cbind(c(1,2,3),c(1001,1002,1003))
Ind <- match(v1, dic[, 1])
> Ind
[1] 1 1 1 2 3 NA 1 NA 3
> sapply(seq(along = Ind),
function(x) if (is.na(Ind[x])) v1[x] else dic[Ind[x], 2])
[1] 1001 1001 1001 1002 1003 4 1001 10 1003
I would certainly test that a bit more to be sure it works on other data.
HTH,
Marc Schwartz
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.