This function retrieves tagged NA values and their associated value labels from a labelled vector.
get_na(x, as.tag = FALSE)
Variable (vector) with value label attributes, including
tagged missing values (see tagged_na()
);
or a data frame or list with such variables.
Logical, if TRUE
, the returned values are not tagged NA's,
but their string representative including the tag value. See 'Examples'.
The tagged missing values and their associated value labels from x
,
or NULL
if x
has no tagged missing values.
Other statistical software packages (like 'SPSS' or 'SAS') allow to define
multiple missing values, e.g. not applicable, refused answer
or "real" missing. These missing types may be assigned with
different values, so it is possible to distinguish between these
missing types. In R, multiple declared missings cannot be represented
in a similar way with the regular missing values. However,
tagged_na()
values can do this.
Tagged NA
s work exactly like regular R missing values
except that they store one additional byte of information: a tag,
which is usually a letter ("a" to "z") or character number ("0" to "9").
This allows to indicate different missings.
Furthermore, see 'Details' in get_values
.
library(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
#> <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) First
#> NA(a) Refused
#> NA(z) Not home
get_na(x)
#> First Refused Not home
#> NA NA NA
# which NA has which tag?
get_na(x, as.tag = TRUE)
#> First Refused Not home
#> "NA(c)" "NA(a)" "NA(z)"
# replace only the NA, which is tagged as NA(c)
if (require("sjmisc")) {
replace_na(x, value = 2, tagged.na = "c")
get_na(replace_na(x, value = 2, tagged.na = "c"))
# data frame as input
y <- labelled(c(2:3, 3:1, tagged_na("y"), 4:1),
c("Agreement" = 1, "Disagreement" = 4, "Why" = tagged_na("y")))
get_na(data.frame(x, y))
}
#> $x
#> First Refused Not home
#> NA NA NA
#>
#> $y
#> Why
#> NA
#>