Как работать со значениями NA с разными метками - PullRequest
0 голосов
/ 20 апреля 2020

У меня возникла проблема при работе со значениями NA из набора данных опроса.

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"))
)

Вот вывод

<Labelled double>
 [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

То, что я хочу, - это рассчитать, сколько NA (c), NA (a) и NA (z) по отдельности, а не в целом. И я хотел бы поместить данные на основе NA (c), NA (a) и NA (z). Как я могу это сделать.

Спасибо!

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Проверьте это:

base::table(haven::as_factor(x, levels = "labels"))

выход

Agreement Disagreement        First 
       2            1            1 
 Refused     Not home 
       1            1 
0 голосов
/ 20 апреля 2020

Мы могли бы использовать функцию get_values из пакета sjlabelled, извлечь значение, содержащее NA, и использовать table, чтобы получить их количество.

table(grep('NA', sjlabelled::get_values(x), value = TRUE))

# NA(a) NA(c) NA(z) 
#    1     1     1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...