[R] Recode values

arun smartpink111 at yahoo.com
Fri Nov 22 15:37:06 CET 2013


Hi,

May be this helps:
set.seed(49)
dat1 <- as.data.frame(matrix(sample(c(NA,0:2),20,replace=TRUE),ncol=2))
dat2 <- dat1
 lst1 <- list(letters[1:3],letters[26:24])
library(plyr)

 dat1[] <-lapply(seq_len(ncol(dat1)),function(i) {x1 <-dat1[,i]; x2 <- lst1[[i]]; mapvalues(x1,c(0,1,2),x2)})

#Or
dat2[] <-lapply(seq_len(ncol(dat2)),function(i) as.character(factor(dat2[,i],labels=lst1[[i]])))

 identical(dat1,dat2)
#[1] TRUE
A.K.


Hi I'm Pasquale, 
I need to recode variables (columns) of a dataframe (call it X). The
 observations (rows) are coded as numeric 0,1,2 and NA. I managed to use
 the lapply() function with recode() as FUN and for() loop but I failed. 
My problem is that for each columns the recoding system is different (i.e. for V1 the code will be 0=a, 1=b, 2=c, for V2 0=z, 1=y, 2=x). 
My new codes are stored in another data frame (call it Y). colnames(X) and rownames(Y) matches. 
How can I solve this situation? 

Thanks a lot in advance, 
Pasquale



More information about the R-help mailing list