我正在分析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”时,缺少值标签。我已经阅读了避难所文档,似乎无法找到解决方案。我也尝试在外部包中读取/写入.pss但在数据集中加载有问题。
我正在使用R版本3.4.0和最新版本的避风港。
有人知道是否有解决方案吗?我非常感谢你的帮助。如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:1)
library(foreign)
df <- read.spss("spss_file.sav", to.data.frame = TRUE)
这可能与您要查找的不完全相同,因为它使用标签作为。因此,如果您有一个SPSS文件,“男性”为0,“女性”为1,则将有一个df,其值均为“男性”和“女性”。它使您更进一步,但可能不是全部解决方案。我正在研究相同的问题,并将让您知道我还能找到什么。
答案 1 :(得分:1)
library ("sjlabelled")
student <- sjlabelled::read_spss("CY6_MS_CMB_STU_QQQ.sav")
student2 <-student
write_spss(student2,"testdata1.sav")
我没有尝试过希望它能起作用。带有sjlabeled的软件包可以与非ASCII字符(例如德国Umlaute)一起使用。
但是请记住,R将标签另存为属性。在进行某些数据转换(例如,作为子数据)时,这些属性会丢失。当在R中丢失时,它们当然不会出现在SPSS中。 sjlabelled :: copy_labels函数在以下情况下非常有用:
student2 <- copy_labels(student2, student) #after data transformations and before export to spss