Recoding keeping NAs

Hi, I'm trying to do a simple recoding of Q31 into a new variable called FRFT in this short data file:

data.frame(stringsAsFactors=FALSE,
         URN = c("CE2151180893757", "CE2151180994299", "CE2151180994309",
                 "CE2151180994316", "CE2151180994344", "CE2151180994349",
                 "CE2151181094373", "CE2151181094377", "CE2151181094380",
                 "CE2151181094440", "CE2151181094443", "CE2151181094451", "CE2151181094472",
                 "CE2151181094482", "CE2151181094484", "CE2151181094488",
                 "CE2151181094490", "CE2151181094493", "CE2151181094498",
                 "CE2151181094511"),
          Q1 = c(10, 10, 9, 10, 9, 10, 9, 10, 7, 9, 8, 7, 8, 8, 10, 10, 9, 10,
                 10, 10),
          Q2 = c(10, 10, 9, 10, 9, 10, 9, 10, 7, 10, 8, 8, 8, 8, 10, 10, 10,
                 10, 10, 10),
          Q3 = c(10, 9, 10, 10, 9, 10, 9, 10, 7, 10, 8, 8, 10, 9, 10, 10, 10,
                 10, 10, 10),
          Q4 = c(10, 10, 10, 10, 9, 10, 8, 10, 10, 8, 8, 8, 10, 9, 10, 10, 10,
                 10, 10, 10),
          Q5 = c(10, 9, 8, 10, 7, 6, 8, 10, 8, 10, 7, 7, 8, 7, 9, 8, 6, 10, 10,
                 10),
          Q6 = c(10, 9, 10, 10, 9, 8, 8, 10, 7, 10, 8, 7, 10, 8, 10, 10, 7, 10,
                 10, 10),
          Q7 = c(10, 8, 8, 10, 8, 8, 8, 9, 5, 10, 8, 8, 10, 8, 10, 8, 7, 10,
                 10, 10),
         Q12 = c(0, 0, 9, 10, 0, 10, 10, 0, 2, 0, 8, 7, 10, 9, 10, 10, 8, 10,
                 10, 10),
         Q13 = c(5, 7, NA, 10, 9, 8, 8, 9, 7, 10, 8, 8, 8, 6, 10, 8, NA, 10,
                 NA, NA),
         Q14 = c(10, 10, 8, 10, 9, 8, 9, 10, 7, 10, 8, 7, 10, 8, 10, 8, 9, 10,
                 7, 10),
         Q15 = c(10, 10, 10, 10, 10, 10, 8, 9, 7, 7, 6, 8, 10, 9, 10, 9, 10,
                 10, 10, 10),
         Q16 = c(10, 10, 10, 10, 10, 10, 9, 10, 7, 10, 7, 8, 10, 9, 10, 10, 9,
                 10, 10, 10),
         Q18 = c(4, 0, 0, 10, 0, 0, 9, 0, 7, 10, 8, 1, 10, 0, 10, 0, 7, 10, 7,
                 10),
         Q20 = c(10, 8, NA, NA, NA, NA, NA, NA, 7, NA, 8, NA, 10, NA, NA, 6,
                 NA, NA, NA, NA),
         Q21 = c(10, 9, NA, NA, NA, NA, NA, NA, 9, NA, 9, NA, 10, NA, NA, 10,
                 NA, NA, NA, NA),
         Q24 = c(NA, NA, NA, NA, NA, NA, NA, NA, 8, NA, 8, NA, NA, NA, NA, 10,
                 NA, NA, NA, NA),
         Q25 = c(NA, NA, NA, NA, NA, NA, NA, NA, 5, NA, 8, NA, NA, NA, NA, 10,
                 NA, NA, NA, NA),
         Q26 = c(NA, NA, NA, NA, NA, NA, NA, NA, 1, NA, 7, NA, NA, NA, NA, 10,
                 NA, NA, NA, NA),
         Q28 = c(NA, NA, NA, NA, NA, NA, NA, NA, 8, NA, 8, NA, NA, NA, NA, NA,
                 NA, NA, NA, NA),
         Q29 = c(NA, NA, NA, NA, NA, NA, NA, NA, 8, NA, 6, NA, NA, NA, NA, NA,
                 NA, NA, NA, NA),
         Q30 = c(NA, NA, NA, NA, NA, NA, NA, NA, 8, NA, 8, NA, NA, NA, NA, NA,
                 NA, NA, NA, NA),
         Q31 = c(NA, NA, NA, NA, NA, NA, NA, NA, 2, NA, 7, NA, NA, NA, NA, NA,
                 NA, NA, NA, NA)
)

Unfortunately this function is not working:

library(car)
service$FRFT <- recode(service$Q31,"2=0;7=100; else=NA")

I know I can also use if_else from dplyr:

library(dplyr)
service$FRFT <- if_else(service$Q31=2, 0, 100, missing = NULL)

but no success.

Can you help please?

What is your desired output? recode() works as expected, converts 2 into 0, 7 into 100 and leaves everything else as NA.

car::recode(service$Q31,"2=0;7=100;else=NA")
 [1]  NA  NA  NA  NA  NA  NA  NA  NA   0  NA 100  NA  NA  NA  NA  NA  NA  NA  NA  NA

Hmm,
I have the following error:

> service$FRFT <- recode(service$Q31,"2=0;7=100; else=NA")
Warning message:
Unreplaced values treated as NA as .x is not compatible. Please specify replacements exhaustively or supply .default 

Maybe because I need to recode Q31 into another variable (FRFT)?

Ok, it's fine now. Thank you.

That error was because you have loaded dplyr and car libraries at the same time, and both of them have a function called recode. On this cases you have to specify which one you want to use this way car::recode()

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.