代码之家  ›  专栏  ›  技术社区  ›  cimentadaj

用R保存Stata文件,同时保留标签

  •  0
  • cimentadaj  · 技术社区  · 5 年前

    我在冰箱里发现了一只虫子 haven 包在哪里 write_dta 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)
    

    如果我把它装进状态并输入 tab freehms ,所有标签均正确:

    screen shot 2019-02-23 at 4 06 36 pm

    价值,那么 写入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)
    

    screen shot 2019-02-23 at 4 08 29 pm

    我已经看过了 write.dta 函数来自 foreign 但它似乎不支持11版之后的Stata版本。还有其他的工作吗?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Lunalo John    5 年前

    尝试包括missing选项,以可视化缺少值的摘要,如图所示

    tab freehms, mi