将标签与na_tags匹配

时间:2019-02-02 03:44:39

标签: r r-haven

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标签?在此示例中,我们可以推断din标签可能对应于DKIAPNA标签分别仅基于其字母(并且我们可以随时检查文档),但是如果可能的话,我想以编程方式进行此操作。

例如,如果您想生成一个特定变量的列表,该列表在与变量相关的标签旁边(包括标记的NA)显示变量的值,这将很有用。

1 个答案:

答案 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)"