This function adds variable labels as attribute
(named "label"
) to the variable x
, resp. to a
set of variables in a data frame or a list-object. var_labels()
is intended for use within pipe-workflows and has a tidyverse-consistent
syntax, including support for quasi-quotation (see 'Examples').
set_label(x, label)
set_label(x) <- value
var_labels(x, ...)
Variable (vector), list of variables or a data frame where variables
labels should be added as attribute. For var_labels()
, x
must be a data frame only.
If x
is a vector (single variable), use a single character string with
the variable label for x
. If x
is a data frame, use a
vector with character labels of same length as ncol(x)
.
Use label = ""
to remove labels-attribute from x
, resp.
set any value of vector label
to ""
to remove specific variable
label attributes from a data frame's variable.
See label
.
Pairs of named vectors, where the name equals the variable name, which should be labelled, and the value is the new variable label.
x
, with variable label attribute(s), which contains the
variable name(s); or with removed label-attribute if
label = ""
.
See vignette Labelled Data and the sjlabelled-Package
for more details; set_labels
to manually set value labels or get_label
to get variable labels.
# manually set value and variable labels
dummy <- sample(1:4, 40, replace = TRUE)
dummy <- set_labels(dummy, labels = c("very low", "low", "mid", "hi"))
dummy <- set_label(dummy, label = "Dummy-variable")
# or use:
# set_label(dummy) <- "Dummy-variable"
# Set variable labels for data frame
dummy <- data.frame(
a = sample(1:4, 10, replace = TRUE),
b = sample(1:4, 10, replace = TRUE),
c = sample(1:4, 10, replace = TRUE)
)
dummy <- set_label(dummy, c("Variable A", "Variable B", "Variable C"))
str(dummy)
#> 'data.frame': 10 obs. of 3 variables:
#> $ a: int 2 1 2 3 2 4 1 2 1 4
#> ..- attr(*, "label")= Named chr "Variable A"
#> .. ..- attr(*, "names")= chr "a"
#> $ b: int 4 2 3 1 2 2 3 2 1 1
#> ..- attr(*, "label")= Named chr "Variable B"
#> .. ..- attr(*, "names")= chr "b"
#> $ c: int 3 2 1 4 1 4 4 3 4 4
#> ..- attr(*, "label")= Named chr "Variable C"
#> .. ..- attr(*, "names")= chr "c"
# remove one variable label
dummy <- set_label(dummy, c("Variable A", "", "Variable C"))
str(dummy)
#> 'data.frame': 10 obs. of 3 variables:
#> $ a: int 2 1 2 3 2 4 1 2 1 4
#> ..- attr(*, "label")= Named chr "Variable A"
#> .. ..- attr(*, "names")= chr "a"
#> $ b: int 4 2 3 1 2 2 3 2 1 1
#> $ c: int 3 2 1 4 1 4 4 3 4 4
#> ..- attr(*, "label")= Named chr "Variable C"
#> .. ..- attr(*, "names")= chr "c"
# setting same variable labels to multiple vectors
# create a set of dummy variables
dummy1 <- sample(1:4, 40, replace = TRUE)
dummy2 <- sample(1:4, 40, replace = TRUE)
dummy3 <- sample(1:4, 40, replace = TRUE)
# put them in list-object
dummies <- list(dummy1, dummy2, dummy3)
# and set variable labels for all three dummies
dummies <- set_label(dummies, c("First Dummy", "2nd Dummy", "Third dummy"))
# see result...
get_label(dummies)
#> [1] "First Dummy" "2nd Dummy" "Third dummy"
# use 'var_labels()' to set labels within a pipe-workflow, and
# when you need "tidyverse-consistent" api.
# Set variable labels for data frame
dummy <- data.frame(
a = sample(1:4, 10, replace = TRUE),
b = sample(1:4, 10, replace = TRUE),
c = sample(1:4, 10, replace = TRUE)
)
if (require("magrittr") && require("rlang")) {
dummy %>%
var_labels(a = "First variable", c = "third variable") %>%
get_label()
# with quasi-quotation
v1 <- "First variable"
v2 <- "Third variable"
dummy %>%
var_labels(a = !!v1, c = !!v2) %>%
get_label()
x1 <- "a"
x2 <- "c"
dummy %>%
var_labels(!!x1 := !!v1, !!x2 := !!v2) %>%
get_label()
}
#> Loading required package: rlang
#>
#> Attaching package: ‘rlang’
#> The following object is masked from ‘package:magrittr’:
#>
#> set_names
#> The following object is masked from ‘package:sjmisc’:
#>
#> is_empty
#> The following objects are masked from ‘package:sjlabelled’:
#>
#> as_character, as_label
#> a b c
#> "First variable" "" "Third variable"