A labelled vector is a common data structure in other statistical environments, allowing you to assign text labels to specific values.

labelled(x, labels, label = NULL)

is.labelled(x)

Arguments

x

A vector to label. Must be either numeric (integer or double) or character.

labels

A named vector or NULL. The vector should be the same type as x. Unlike factors, labels don't need to be exhaustive: only a fraction of the values might be labelled.

label

A short, human-readable description of the vector.

Value

An object of class "haven_labelled" or "haven_labelled_spss".

See also

Examples

s1 <- labelled(c("M", "M", "F"), c(Male = "M", Female = "F")) s1
#> <Labelled character> #> [1] M M F #> #> Labels: #> value label #> M Male #> F Female
str(s1)
#> 'haven_labelled' chr [1:3] "M" "M" "F" #> - attr(*, "labels")= Named chr [1:2] "M" "F" #> ..- attr(*, "names")= chr [1:2] "Male" "Female"
s2 <- labelled(c(1, 1, 2), c(Male = 1, Female = 2), label="Assigned sex at birth") s2
#> <Labelled double>: Assigned sex at birth #> [1] 1 1 2 #> #> Labels: #> value label #> 1 Male #> 2 Female
str(s2)
#> 'haven_labelled' num [1:3] 1 1 2 #> - attr(*, "label")= chr "Assigned sex at birth" #> - attr(*, "labels")= Named num [1:2] 1 2 #> ..- attr(*, "names")= chr [1:2] "Male" "Female"
# Unfortunately it's not possible to make as.factor() work for labelled objects # so instead use to_factor(). This works for all types of labelled vectors. to_factor(s1)
#> [1] Male Male Female #> Levels: Male Female
to_factor(s1, levels = "prefixed")
#> [1] [M] Male [M] Male [F] Female #> Levels: [M] Male [F] Female
#> [1] Male Male Female #> attr(,"label") #> [1] Assigned sex at birth #> Levels: Male Female
# Other statistical software supports multiple types of missing values s3 <- labelled_spss(c(1, 1, 2, 2, 8, 9), c(Male = 1, Female = 2, Refused = 8, "Not applicable" = 9), na_values = c(8, 9) ) s3
#> <Labelled SPSS double> #> [1] 1 1 2 2 8 9 #> Missing values: 8, 9 #> #> Labels: #> value label #> 1 Male #> 2 Female #> 8 Refused #> 9 Not applicable
str(s3)
#> 'haven_labelled_spss' num [1:6] 1 1 2 2 8 9 #> - attr(*, "labels")= Named num [1:4] 1 2 8 9 #> ..- attr(*, "names")= chr [1:4] "Male" "Female" "Refused" "Not applicable" #> - attr(*, "na_values")= num [1:2] 8 9
#> [1] Male Male Female Female Refused #> [6] Not applicable #> Levels: Male Female Refused Not applicable
to_factor(s3, user_na_to_na = TRUE)
#> [1] Male Male Female Female <NA> <NA> #> Levels: Male Female Refused Not applicable
is.labelled(s1)
#> [1] TRUE