使用值标签在R中导入spss文件的最佳方法是什么?

时间:2017-01-15 17:12:24

标签: r import spss

我有一个spss文件,其中包含变量和值标签。我看到了包含read.spss函数的外包:

data <- read.spss("2017.sav", to.data.frame = TRUE, use.value.labels = TRUE)

如果我使用use.value.labels = TRUE,所有字符串都会更改为因子变量而我不想要它,因为它们不是因子全部。

我找到了一个解决方案,但我不知道这是否是最好的方法

1º首先读取带有前一句子的spss文件
2º选择哪些变量不是因子,并将其更改为字符串:

cols <- c("x", "ab")

data[cols] <- lapply(data[cols], as.character)

如果我不使用use.value.labels = TRUE我将没有值标签,我无法正确导出文件

2 个答案:

答案 0 :(得分:1)

我不知道为什么,但是我无法安装“外国”软件包。

这就是我所做的,是将数据集从SPSS导入到R(通过Excel):

  1. 在SPSS中打开数据。
  2. 将数据集从SPSS导出到Excel,但请确保选择“保存 值标签定义而不是数据值”选项 非常低端。
  3. 打开R。
  4. 从Excel导入数据集。

现在,您在R中有一个带有值标签的数据集。

答案 1 :(得分:0)

您还可以使用memisc包:

sav <- spss.system.file("file.sav")
df <- as.data.set(sav)

我的公司经常处理SAV文件,我们分别提取元数据。使用foreign包,您可以通过几种不同的方式获取元数据(在您加载文件后):

data.label.table <- attr(sav, "label.table")
missings <- attr(sav, "missings")

其他位需要各种lapplysapply函数才能将它们取出。我的脚本很长,所以我不会在这里分享。如果您使用read.spss(sav, to.data.frame = TRUE)阅读数据,则可以获得:

VariableLabels <- unname(attr(sav, "variable.labels"))