These functions add, replace or remove value labels to or from variables.

add_labels(x, ..., labels)

replace_labels(x, ..., labels)

remove_labels(x, ..., labels)

Arguments

x

A vector or data frame.

...

Optional, unquoted names of variables that should be selected for further processing. Required, if x is a data frame (and no vector) and only selected variables from x should be processed. You may also use functions like : or tidyselect's select-helpers. See 'Examples'.

labels
For add_labels()

A named (numeric) vector of labels that will be added to x as label attribute.

For remove_labels()

Either a numeric vector, indicating the position of one or more label attributes that should be removed; a character vector with names of label attributes that should be removed; or a tagged_na() to remove the labels from specific NA values.

Value

x with additional or removed value labels. If x is a data frame, the complete data frame x will be returned, with removed or added to variables specified in ...; if ... is not specified, applies to all variables in the data frame.

Details

add_labels() adds labels to the existing value labels of x, however, unlike set_labels, it does not remove labels that were not specified in labels. add_labels() also replaces existing value labels, but preserves the remaining labels.

remove_labels() is the counterpart to add_labels(). It removes labels from a label attribute of x.

replace_labels() is an alias for add_labels().

See also

set_label to manually set variable labels or get_label to get variable labels; set_labels to add value labels, replacing the existing ones (and removing non-specified value labels).

Examples

# add_labels()
data(efc)
get_labels(efc$e42dep)
#> [1] "independent"          "slightly dependent"   "moderately dependent"
#> [4] "severely dependent"  

x <- add_labels(efc$e42dep, labels = c(`nothing` = 5))
get_labels(x)
#> [1] "independent"          "slightly dependent"   "moderately dependent"
#> [4] "severely dependent"   "nothing"             

if (require("dplyr")) {
  x <- efc %>%
    # select three variables
    dplyr::select(e42dep, c172code, c161sex) %>%
    # only add new label to two of those
    add_labels(e42dep, c172code, labels = c(`nothing` = 5))
  # see data frame, with selected variables having new labels
  get_labels(x)
}
#> Loading required package: dplyr
#> 
#> Attaching package: ‘dplyr’
#> The following object is masked from ‘package:sjlabelled’:
#> 
#>     as_label
#> The following objects are masked from ‘package:stats’:
#> 
#>     filter, lag
#> The following objects are masked from ‘package:base’:
#> 
#>     intersect, setdiff, setequal, union
#> $e42dep
#> [1] "independent"          "slightly dependent"   "moderately dependent"
#> [4] "severely dependent"   "nothing"             
#> 
#> $c172code
#> [1] "low level of education"          "intermediate level of education"
#> [3] "high level of education"         "nothing"                        
#> 
#> $c161sex
#> [1] "Male"   "Female"
#> 

x <- add_labels(efc$e42dep, labels = c(`nothing` = 5, `zero value` = 0))
get_labels(x, values = "p")
#> [1] "[0] zero value"           "[1] independent"         
#> [3] "[2] slightly dependent"   "[3] moderately dependent"
#> [5] "[4] severely dependent"   "[5] nothing"             

# replace old value labels
x <- add_labels(
  efc$e42dep,
  labels = c(`not so dependent` = 4, `lorem ipsum` = 5)
)
#> label 'severely dependent' was replaced with new value label.
get_labels(x, values = "p")
#> [1] "[1] independent"          "[2] slightly dependent"  
#> [3] "[3] moderately dependent" "[4] not so dependent"    
#> [5] "[5] lorem ipsum"         

# replace specific missing value (tagged NA)
if (require("haven")) {
  x <- labelled(c(1:3, tagged_na("a", "c", "z"), 4:1),
                c("Agreement" = 1, "Disagreement" = 4, "First" = tagged_na("c"),
                  "Refused" = tagged_na("a"), "Not home" = tagged_na("z")))
  # get current NA values
  x
  # tagged NA(c) has currently the value label "First", will be
  # replaced by "Second" now.
  replace_labels(x, labels = c("Second" = tagged_na("c")))
}
#> Loading required package: haven
#> 
#> Attaching package: ‘haven’
#> The following objects are masked from ‘package:sjlabelled’:
#> 
#>     as_factor, read_sas, read_spss, read_stata, write_sas, zap_labels
#> tagged NA 'First' was replaced with new value label.
#> <labelled<double>[10]>
#>  [1]     1     2     3 NA(a) NA(c) NA(z)     4     3     2     1
#> 
#> Labels:
#>  value        label
#>      1    Agreement
#>      4 Disagreement
#>  NA(c)       Second
#>  NA(a)      Refused
#>  NA(z)     Not home


# remove_labels()

x <- remove_labels(efc$e42dep, labels = 2)
get_labels(x, values = "p")
#> [1] "[1] independent"          "[3] moderately dependent"
#> [3] "[4] severely dependent"  

x <- remove_labels(efc$e42dep, labels = "independent")
get_labels(x, values = "p")
#> [1] "[2] slightly dependent"   "[3] moderately dependent"
#> [3] "[4] severely dependent"  

if (require("haven")) {
  x <- labelled(c(1:3, tagged_na("a", "c", "z"), 4:1),
                c("Agreement" = 1, "Disagreement" = 4, "First" = tagged_na("c"),
                  "Refused" = tagged_na("a"), "Not home" = tagged_na("z")))
  # get current NA values
  get_na(x)
  get_na(remove_labels(x, labels = tagged_na("c")))
}
#>  Refused Not home 
#>       NA       NA