【问题标题】:Saving Stata file with R while preserving labels在保留标签的同时使用 R 保存 Stata 文件
【发布时间】:2019-03-06 15:44:45
【问题描述】:

我在 R haven 包中发现了一个错误,其中write_dta 在 Stata 中读取它时会丢弃一些标签。我在haven 中有filed the bug,但我真的需要找到解决方法,直到错误得到修复。下面是解释。

让我们定义一个只有 一个 标记为 NA 值的双精度对象。

library(haven)
#> Warning: package 'haven' was built under R version 3.4.4

tst <-
  labelled(
    c(
      1:5,
      tagged_na("d")
    ),
    c(
      "Agree Strongly" = 1,
      "Agree" = 2,
      "Neither agree nor disagree" = 3,
      "Disagree" = 4,
      "Disagree strongly" = 5,
      "No answer" = tagged_na("d")
    )
  )

tst
#> <Labelled double>
#> [1]     1     2     3     4     5 NA(d)
#> 
#> Labels:
#>  value                      label
#>      1             Agree Strongly
#>      2                      Agree
#>      3 Neither agree nor disagree
#>      4                   Disagree
#>      5          Disagree strongly
#>  NA(d)                  No answer

write_dta(data.frame(freehms = tst), "test.dta", version = 13)

如果我在 Stata 中加载它并输入 tab freehms,所有标签都是正确的:

现在,如果我使用上面的代码并添加另一个标记为 NA 的值,那么 write_dta 会出于某种原因删除最后一个标签:

library(haven)
#> Warning: package 'haven' was built under R version 3.4.4

tst <-
  labelled(c(1:5,
             tagged_na('d'),
             ## Only added this
             tagged_na('c')
          ),
        c('Agree Strongly' = 1,
          'Agree' = 2,
          'Neither agree nor disagree' = 3,
          'Disagree' = 4,
          'Disagree strongly' = 5,
          'No answer' = tagged_na('d'),
            ## And this
          'Dont know' = tagged_na('c')
          )
        )

tst
#> <Labelled double>
#> [1]     1     2     3     4     5 NA(d) NA(c)
#> 
#> Labels:
#>  value                      label
#>      1             Agree Strongly
#>      2                      Agree
#>      3 Neither agree nor disagree
#>      4                   Disagree
#>      5          Disagree strongly
#>  NA(d)                  No answer
#>  NA(c)                  Dont know

write_dta(data.frame(freehms = tst), "test.dta", version = 13)

我查看了 foreign 中的 write.dta 函数,但它似乎不支持 11 版之后的 Stata 版本。还有其他解决方法吗?

【问题讨论】:

    标签: r stata r-haven


    【解决方案1】:

    尝试包含缺失选项,以显示缺失值的摘要,如图所示

    tab freehms, mi
    
    

    【讨论】:

    • 您好,感谢您的回答,但不能解决问题。我不希望看到缺失值,但正如您从上面看到的那样,值 5 的标签已被删除(这不是缺失值类别)
    猜你喜欢
    • 2021-12-26
    • 2019-02-19
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多