A labelled vector is a common data structure in other statistical
environments, allowing you to assign text labels to specific values.
This class makes it possible to import such labelled vectors in to R
without loss of fidelity. This class provides few methods, as I
expect you'll coerce to a standard R class (e.g. a factor()
)
soon after importing.
labelled(x = double(), labels = NULL, label = NULL) is.labelled(x)
x | A vector to label. Must be either numeric (integer or double) or character. |
---|---|
labels | A named vector or |
label | A short, human-readable description of the vector. |
s1 <- labelled(c("M", "M", "F"), c(Male = "M", Female = "F")) s2 <- labelled(c(1, 1, 2), c(Male = 1, Female = 2)) s3 <- labelled(c(1, 1, 2), c(Male = 1, Female = 2), label="Assigned sex at birth") # Unfortunately it's not possible to make as.factor work for labelled objects # so instead use as_factor. This works for all types of labelled vectors. as_factor(s1)#> [1] Male Male Female #> Levels: Female Male#> [1] M M F #> Levels: M F#> [1] Male Male Female #> Levels: Male Female# Other statistical software supports multiple types of missing values s3 <- labelled(c("M", "M", "F", "X", "N/A"), c(Male = "M", Female = "F", Refused = "X", "Not applicable" = "N/A") ) s3#> <labelled<character>[5]> #> [1] M M F X N/A #> #> Labels: #> value label #> M Male #> F Female #> X Refused #> N/A Not applicable#> [1] Male Male Female Refused Not applicable #> Levels: Female Male Not applicable Refused# Often when you have a partially labelled numeric vector, labelled values # are special types of missing. Use zap_labels to replace labels with missing # values x <- labelled(c(1, 2, 1, 2, 10, 9), c(Unknown = 9, Refused = 10)) zap_labels(x)#> [1] 1 2 1 2 10 9