如何识别不同类型的 NA 数据

How to identify different types of NA data

我有一个从 Stata 导入 R 的数据集,但以 .rda 格式提供给我(我无权访问原始 Stata 数据集)。许多字段属于 class : "haven_labelled" "vctrs_vctr" "double"。数据经过编码,因此有不同类型的 NA.

在这里您可以看到标签的示例和 NA 的不同类型

不幸的是,R 似乎将它们全部解释为 NA。使用 View(dataframe) 在 R Studio 中查看数据或创建绘图时,所有 NA 类型都显示为“NA”并且无法区分。但是,在 R 控制台中查看数据时,确实会显示不同的类型。

查看数据 View():

R 控制台中的数据:

我需要能够区分 NA(c) 值和其他值 (NA(a), NA(b)) 以进行数据分析,但我不知道如何让 R 识别它们不一样。

不幸的是,我不能做一个可重现的例子,因为我不明白这些 NA 是怎么回事。是否可以将它们分开?

任何有关如何处理此问题的帮助或见解将不胜感激!

编辑:感谢您的回复!

这是输出 dput(head(lapop$psc1n)):

这是一个简单的条形图示例:

`ggplot(lapop, aes(as.factor(psc1n))) +
       geom_bar()`

给我:

这里我需要排除占多数的 NA(c),并将 NA“a”和“b”视为单独的类别。

我目前正在查看 G. Grothendieck 提到的 sjmisc 包中的 replace_na() 函数,我认为它会有所帮助。

我能够使用 Grothendieck 建议的 sjmisc 包中的 replace_na() 函数非常轻松地做到这一点。我发现 sjlabelled 包中的 count_na() 函数有助于 validation/checking 每个 NA 类型的计数。

感谢您的回复和格式帮助。

library(sjmisc)
library(sjlabelled)

## checking counts of each NA type
count_na(data$psc1n)

## replacing the meaningful NA values
data$temp <- replace_na(data$psc1n, value = 999,tagged.na = "a")
data$temp <- replace_na(data$temp, value = 888,tagged.na = "b")

## filtering out respondents who were not asked questions of interest (NA(c)s)
data_filtered <- data[is.na(data$temp)== FALSE,]

## checking that the data set only has the NAs of interest
count_na(data_filtered$psc1n)

## creating the graph with NA values b and c separated out
ggplot(data_filtered, aes(as.factor(temp))) +
    geom_bar()