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)显示变量的值,这将很有用。
答案 0 :(得分:1)
看看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)"