R: Recode values of a vector

recodeVar {doBy} | R Documentation

## Recode values of a vector

### Description

Recodes a vector with values, say 1,2 to a variable with values, say 'a', 'b'

### Usage

    recodeVar(x, src, tgt, default = NULL, keep.na = TRUE)

### Arguments

`x` | A vector; the variable to be recoded
`src` | The source values: a subset of the present values of x
`tgt` | The target values: the corresponding new values of x
`default` | Default target value for those values of x not listed in 'src'. When default=NULL, values of x which are not given in 'src' will be kept in the output.
`keep.na` | If TRUE then NA's in x will be retained in the output

### Value

A vector

### Warning

Care should be taken if x is a factor. A safe approach may be to convert x to a character vector using as.character.

### Author(s)

Søren Højsgaard, sorenh@math.aau.dk

### See Also

`cut`, `factor`, `recodeVar`

### Examples

    x <- c("dec", "jan", "feb", "mar", "apr", "may")
    src1 <- list(c("dec", "jan", "feb"), c("mar", "apr", "may"))
    tgt1 <- list("winter", "spring")
    recodeVar(x, src=src1, tgt=tgt1)
    #[1] "winter" "winter" "winter" "spring" "spring" "spring"

    x <- c(rep(1:3, 3))
    #[1] 1 2 3 1 2 3 1 2 3

    ## Simple usage:
    recodeVar(x, src=c(1, 2), tgt=c("A", "B"))
    #[1] "A" "B" NA  "A" "B" NA  "A" "B" NA

    ## Here we need to use lists
    recodeVar(x, src=list(c(1, 2)), tgt=list("A"))
    #[1] "A" "A" NA  "A" "A" NA  "A" "A" NA
    recodeVar(x, src=list(c(1, 2)), tgt=list("A"), default="L")
    #[1] "A" "A" "L" "A" "A" "L" "A" "A" "L"
    recodeVar(x, src=list(c(1, 2), 3), tgt=list("A", "B"), default="L")
    #[1] "A" "A" "B" "A" "A" "B" "A" "A" "B"

    ## Dealing with NA's in x
    x<-c(NA,rep(1:3, 3),NA)
    #[1] NA  1  2  3  1  2  3  1  2  3 NA
    recodeVar(x, src=list(c(1, 2)), tgt=list("A"))
    #[1] NA  "A" "A" NA  "A" "A" NA  "A" "A" NA  NA
    recodeVar(x, src=list(c(1, 2)), tgt=list("A"), default="L")
    #[1] NA  "A" "A" "L" "A" "A" "L" "A" "A" "L" NA
    recodeVar(x, src=list(c(1, 2)), tgt=list("A"), default="L", keep.na=FALSE)
    #[1] "L" "A" "A" "L" "A" "A" "L" "A" "A" "L" "L"

    x <- c("no", "yes", "not registered", "no", "yes", "no answer")
    recodeVar(x, src = c("no", "yes"), tgt = c("0", "1"), default = NA)

[Package doBy version 4.6.5 Index]