na_values {labelled} | R Documentation |
Get / Set SPSS missing values
na_values(x) na_values(x) <- value na_range(x) na_range(x) <- value set_na_values(.data, ..., .values = NA, .strict = TRUE) set_na_range(.data, ..., .values = NA, .strict = TRUE) is_user_na(x) is_regular_na(x) user_na_to_na(x) user_na_to_regular_na(x) user_na_to_tagged_na(x)
x |
A vector (or a data frame). |
value |
A vector of values that should also be considered as missing
(for |
.data |
a data frame |
... |
name-value pairs of missing values (see examples) |
.values |
missing values to be applied to the data.frame,
using the same syntax as |
.strict |
should an error be returned if some labels
doesn't correspond to a column of |
See haven::labelled_spss()
for a presentation of SPSS's user defined missing values.
Note that base::is.na()
will return TRUE
for user defined missing values. It will
also return TRUE
for regular NA
values. If you want to test if a specific
value is a user NA but not a regular NA
, use is_user_na()
. If you want to
test if a value is a regular NA
but not a user NA, not a tagged NA, use
is_regular_na()
.
You can use user_na_to_na()
to convert user defined missing values to regular NA
.
Note that any value label attached to a user defined missing value will be lost.
user_na_to_regular_na()
is a synonym of user_na_to_na()
.
The method user_na_to_tagged_na()
will convert user defined missing values
into haven::tagged_na()
, preserving value labels. Please note that haven::tagged_na()
are defined only for double vectors. Therefore, integer haven_labelled_spss
vectors will be converted into double haven_labelled
vectors; and
user_na_to_tagged_na()
cannot be applied to a character haven_labelled_spss
vector.
tagged_na_to_user_na()
is the opposite of user_na_to_tagged_na()
and convert
tagged NA
into user defined missing values.
na_values()
will return a vector of values that should also be considered as missing.
na_range()
will return a numeric vector of length two giving the (inclusive)
extents of the range.
set_na_values()
and set_na_range()
will return an updated
copy of .data
.
set_na_values()
and set_na_range()
could be used with dplyr syntax.
haven::labelled_spss()
, user_na_to_na()
v <- labelled(c(1,2,2,2,3,9,1,3,2,NA), c(yes = 1, no = 3, "don't know" = 9)) v na_values(v) <- 9 na_values(v) v is.na(v) # TRUE for the 6th and 10th values is_user_na(v) # TRUE only for the 6th value user_na_to_na(v) na_values(v) <- NULL v na_range(v) <- c(5, Inf) na_range(v) v user_na_to_na(v) user_na_to_tagged_na(v) # it is not recommended to mix user NAs and tagged NAs x <- c(NA, 9, tagged_na("a")) na_values(x) <- 9 x is.na(x) is_user_na(x) is_tagged_na(x) is_regular_na(x) if (require(dplyr)) { # setting value label and user NAs df <- tibble(s1 = c("M", "M", "F", "F"), s2 = c(1, 1, 2, 9)) %>% set_value_labels(s2 = c(yes = 1, no = 2)) %>% set_na_values(s2 = 9) na_values(df) # removing missing values df <- df %>% set_na_values(s2 = NULL) df$s2 }