如何使用不同的标签处理NA值

问题描述 投票:0回答:2

我在处理调查数据集中的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)对数据进行子集化。我该怎么做。

谢谢!

r label na
2个回答
1
投票

检查此:

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

输出

Agreement Disagreement        First 
       2            1            1 
 Refused     Not home 
       1            1 

0
投票

我们可以从get_values包中使用sjlabelled函数,提取其中包含NA的值,然后使用table来获取其计数。

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

# NA(a) NA(c) NA(z) 
#    1     1     1 
© www.soinside.com 2019 - 2024. All rights reserved.