如其他问题所述,将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多个变量......¿你知道更好的方法吗?或者¿你知道我在导入时做错了吗?
答案 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