如何识别不同类型的 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()
我有一个从 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()