繁体   English   中英

如何处理具有不同标签的 NA 值

[英]How to deal with NA values with different labels

我在处理调查数据集中的 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"))
)

这是 output

<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) 对数据进行子集化。 我怎样才能做到这一点。

谢谢!

检查这个:

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

output

Agreement Disagreement        First 
       2            1            1 
 Refused     Not home 
       1            1 

我们可以使用来自sjlabelled package 的get_values function,提取其中有NA的值并使用table来获取它们的计数。

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

# NA(a) NA(c) NA(z) 
#    1     1     1 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM