【问题标题】:match labels with na_tags将标签与 na_tags 匹配
【发布时间】:2019-02-02 03:44:38
【问题描述】:

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。

【问题讨论】:

    标签: r r-haven


    【解决方案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)" 
    

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 2014-11-07
      • 2021-10-31
      • 2012-07-25
      相关资源
      最近更新 更多