R/drop_labels.R
, R/fill_labels.R
, R/zap_labels.R
zap_labels.Rd
For (partially) labelled vectors, zap_labels()
will replace
all values that have a value label attribute with NA
;
zap_unlabelled()
, as counterpart, will replace all values
that don't have a value label attribute with NA
.
drop_labels()
drops all value labels for unused values,
i.e. values that are not present in a vector. fill_labels()
is the
counterpart to drop_labels()
and adds value labels to
a partially labelled vector, i.e. if not all values are
labelled, non-labelled values get labels.
drop_labels(x, ..., drop.na = TRUE)
fill_labels(x, ...)
zap_labels(x, ...)
zap_unlabelled(x, ...)
(partially) labelled()
vector or a data frame
with such vectors.
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'.
Logical, whether existing value labels of tagged NA values
(see tagged_na
) should be removed (drop.na = TRUE
,
the default) or preserved (drop.na = FALSE
).
See get_na
for more details on tagged NA values.
For zap_labels()
, x
, where all labelled values are converted to NA
.
For zap_unlabelled()
, x
, where all non-labelled values are converted to NA
.
For drop_labels()
, x
, where value labels for non-existing values are removed.
For fill_labels()
, x
, where labels for non-labelled values are added.
If x
is a data frame, the complete data frame x
will be
returned, with variables specified in ...
being converted;
if ...
is not specified, applies to all variables in the
data frame.
if (require("sjmisc") && require("dplyr")) {
# zap_labels() ----
data(efc)
str(efc$e42dep)
x <- set_labels(
efc$e42dep,
labels = c("independent" = 1, "severe dependency" = 4)
)
table(x)
get_values(x)
str(x)
# zap all labelled values
table(zap_labels(x))
get_values(zap_labels(x))
str(zap_labels(x))
# zap all unlabelled values
table(zap_unlabelled(x))
get_values(zap_unlabelled(x))
str(zap_unlabelled(x))
# in a pipe-workflow
efc %>%
select(c172code, e42dep) %>%
set_labels(
e42dep,
labels = c("independent" = 1, "severe dependency" = 4)
) %>%
zap_labels()
# drop_labels() ----
rp <- rec_pattern(1, 100)
rp
# sample data
data(efc)
# recode carers age into groups of width 5
x <- rec(efc$c160age, rec = rp$pattern)
# add value labels to new vector
x <- set_labels(x, labels = rp$labels)
# watch result. due to recode-pattern, we have age groups with
# no observations (zero-counts)
frq(x)
# now, let's drop zero's
frq(drop_labels(x))
# drop labels, also drop NA value labels, then also zap tagged NA
if (require("haven")) {
x <- labelled(c(1:3, tagged_na("z"), 4:1),
c("Agreement" = 1, "Disagreement" = 4, "Unused" = 5,
"Not home" = tagged_na("z")))
x
drop_labels(x, drop.na = FALSE)
drop_labels(x)
zap_na_tags(drop_labels(x))
# fill_labels() ----
# create labelled integer, with tagged missings
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 values and labels
x
get_labels(x)
fill_labels(x)
get_labels(fill_labels(x))
# same as
get_labels(x, non.labelled = TRUE)
}
}
#> num [1:908] 3 3 3 4 4 4 4 4 4 4 ...
#> - attr(*, "label")= chr "elder's dependency"
#> - attr(*, "labels")= Named num [1:4] 1 2 3 4
#> ..- attr(*, "names")= chr [1:4] "independent" "slightly dependent" "moderately dependent" "severely dependent"
#> num [1:908] 3 3 3 4 4 4 4 4 4 4 ...
#> - attr(*, "label")= chr "elder's dependency"
#> - attr(*, "labels")= Named num [1:2] 1 4
#> ..- attr(*, "names")= chr [1:2] "independent" "severe dependency"
#> num [1:908] 3 3 3 4 4 4 4 4 4 4 ...
#> - attr(*, "label")= chr "elder's dependency"
#> - attr(*, "labels")= Named num [1:2] 1 4
#> ..- attr(*, "names")= chr [1:2] "independent" "severe dependency"
#> num [1:908] NA NA NA 4 4 4 4 4 4 4 ...
#> - attr(*, "label")= chr "elder's dependency"
#> - attr(*, "labels")= Named num [1:2] 1 4
#> ..- attr(*, "names")= chr [1:2] "independent" "severe dependency"
#> [1] "Agreement" "2" "3" "Disagreement"