【问题标题】:Retain SPSS value labels when working with data处理数据时保留 SPSS 值标签
【发布时间】:2018-04-22 17:43:16
【问题描述】:

我正在分析 PISA 2015 的学生水平数据。数据以 SPSS 格式提供here

我可以使用 Haven 包中的 read_sav 函数将数据加载到 R 中。我需要能够编辑 R 中的数据,然后以 SPSS 格式保存/导出数据,其中包含在 SPSS 下载中的原始值标签完好无损。我使用的代码是:

library(haven)
student<-read_sav("CY6_MS_CMB_STU_QQQ.sav",user_na = T)
student2<-data.frame(student)
#some edits to data
write_sav(student2,"testdata1.sav")

当我的同事(在 SPSS 中工作)尝试打开“testdata1.sav”时,值标签丢失。我已经阅读了 Haven 文档,但似乎找不到解决方案。我也在外部包中尝试了 read/write.spss,但在数据集中加载时出现问题。

我正在使用 R 版本 3.4.0 和最新版本的 Haven。

有谁知道这个问题有没有解决办法?我会非常感谢你的帮助。如果您需要任何其他信息来回答这个问题,请告诉我。

【问题讨论】:

    标签: r import export spss r-haven


    【解决方案1】:
    library(foreign)
    df <- read.spss("spss_file.sav", to.data.frame = TRUE)
    

    这可能不是您正在寻找的,因为它使用标签 as 数据。因此,如果您有一个 SPSS 文件,其中“男性”为 0,“女性”为 1,那么您将拥有一个值均为男性和女性的 df。它让你更进一步,但也许不是整个解决方案。我正在解决同样的问题,并会让你知道我还发现了什么。

    【讨论】:

      【解决方案2】:
      library ("sjlabelled")
      student <- sjlabelled::read_spss("CY6_MS_CMB_STU_QQQ.sav")
      student2 <-student
      write_spss(student2,"testdata1.sav")
      

      我没有尝试并希望它有效。 sjlabelled 包非常适合使用非 ascii 字符作为德语变音符号。

      但请记住,R 将标签保存为属性。在进行一些数据转换(例如子集数据)时,这些属性会丢失。当在 R 中丢失时,它们当然不会出现在 SPSS 中。 sjlabelled::copy_labels 函数在这些情况下很有帮助:

      student2 <- copy_labels(student2, student) #after data transformations and before export to spss
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-08
        相关资源
        最近更新 更多