Recoding all vectors in a dataframe at once (R)

This post is just a little reminder for myself, because i had to look this up a few times.
Version 1

#Before:
[1] 5 4 3 5 3 4

#After:
[1] Stimme gar nicht zu  
Stimme eher nicht zu 
Teils / teils       
Stimme gar nicht zu  
Teils / teils        
Stimme eher nicht zu

I use „recode“ from the car package, to recode the variables. This function will be used with „apply“ so it will recode all vectors in the dataframe.

Here´s how it´s done:

df<- apply(df, 2, function(x) {
  x <- car::recode(x,"1='Stimme voll und ganz zu'; 2='Stimme eher zu';3='Teils / teils';4='Stimme eher nicht zu';5='Stimme gar nicht zu';9=NA"); x
  })
df<-as.data.frame(df)

Version 2
If you only want to recode some of the variables in you dataframe, you can define them in a list and use this list in a for-loop.

library(car)
var.list<-c("var1","var3","var5")
for (v in var.list)
  df[[v]]<-recode(df[[v]], "1=5;2=4;4=2;5=1")

Version 3
If the values just have to be reversed, there´s an even simpler way:

recode.list<-c("variable1","variable2") 
df[recode.list] <- 6 - df[recode.list]  

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.