如何从SPSS可移植文件中正确导入缺失值?

时间:2013-12-09 18:27:50

标签: r import spss na

如其他问题所述,将SPSS数据集导入R的最佳方法是首先将SPSS文件导出为“便携式SPSS”格式,然后按如下方式使用memisc:

library(memisc) 
mydata <- as.data.set(spss.portable.file("myspss.por"))

但我的问题是NAs被编码为文本(即使我在SPSS中指定了NA值)

我的解决方案是为每个变量执行此操作:

mydata$v1[mydata$v1 == "NA"] <- NA

但我有50多个变量......¿你知道更好的方法吗?或者¿你知道我在导入时做错了吗?

3 个答案:

答案 0 :(得分:2)

我找到了一个适合我的解决方案:

library(memisc)
mydata <- as.data.set(spss.portable.file("myspssdata.por"))
mydata <- as.data.frame(mydata)

当data.set转换为data.frame时,所有NA值都是正确的。

我还尝试直接获取data.frame:

mydata <- as.data.frame(spss.portable.file("myspssdata.por"))

但是通过这种方式,我获得了一个带有0个观察值的data.frame。因此,似乎必须先通过data.set。

感谢您的回答。

答案 1 :(得分:1)

只做

is.na(mydata) <- mydata == "NA"

并且所有列中的所有"NA"都替换为实际NA s。

答案 2 :(得分:0)

我使用Hmisc::spss.get来读取SPSS并正确导入NA值:

library(Hmisc)
r <- spss.get(survey_results_file, use.value.labels=T)
> str(r[273,"Q5A8"])
 Factor w/ 4 levels "1 Not Important",..: NA
> is.na(r[273,"Q5A8"])
[1] TRUE