将标签与 na_tags 匹配
match labels with na_tags
haven
包在读取 Stata/SPSS 文件时保留值标签和标记的 NA。例如,在 GSS 的自雇变量中,标签表明存在三种不同的 NA 值:
library(tidyverse)
library(haven)
download.file(url="http://gss.norc.org/Documents/stata/2016_stata.zip",
destfile = "2016_stata.zip")
unzip("2016_stata.zip")
gss <- read_dta("GSS2016.dta")
attr(gss$wrkslf, "labels")
#> self-employed someone else DK IAP NA
#> 1 2 NA NA NA
查看该变量的 na_tag()
,我们可以确认存在三种类型的 NA 标签:
table(na_tag(gss$wrkslf))
#>
#> d i n
#> 4 90 5
我的问题是,我们如何找出 labels
中的哪些字符串对应于 NA 标签中的哪些?在这个例子中,我们可以推断d
、i
和n
标签可能对应于DK
、IAP
和NA
标签分别基于它们的字母(我们总是可以查看文档),但如果可能的话,我想要一种以编程方式执行此操作的方法。
例如,如果您想生成一个特定变量的表格,该表格显示变量的值及其相关标签(包括标记的 NA),这将很有用。
查看 print_labels
的定义,我看到 na 标签和标签是这样关联的:
format_tagged_na(attr(gss$wrkslf, "labels"))
self-employed someone else DK IAP NA
" 1" " 2" "NA(d)" "NA(i)" "NA(n)"
haven
包在读取 Stata/SPSS 文件时保留值标签和标记的 NA。例如,在 GSS 的自雇变量中,标签表明存在三种不同的 NA 值:
library(tidyverse)
library(haven)
download.file(url="http://gss.norc.org/Documents/stata/2016_stata.zip",
destfile = "2016_stata.zip")
unzip("2016_stata.zip")
gss <- read_dta("GSS2016.dta")
attr(gss$wrkslf, "labels")
#> self-employed someone else DK IAP NA
#> 1 2 NA NA NA
查看该变量的 na_tag()
,我们可以确认存在三种类型的 NA 标签:
table(na_tag(gss$wrkslf))
#>
#> d i n
#> 4 90 5
我的问题是,我们如何找出 labels
中的哪些字符串对应于 NA 标签中的哪些?在这个例子中,我们可以推断d
、i
和n
标签可能对应于DK
、IAP
和NA
标签分别基于它们的字母(我们总是可以查看文档),但如果可能的话,我想要一种以编程方式执行此操作的方法。
例如,如果您想生成一个特定变量的表格,该表格显示变量的值及其相关标签(包括标记的 NA),这将很有用。
查看 print_labels
的定义,我看到 na 标签和标签是这样关联的:
format_tagged_na(attr(gss$wrkslf, "labels"))
self-employed someone else DK IAP NA
" 1" " 2" "NA(d)" "NA(i)" "NA(n)"