将SPSS文件读入R中

Bti*_*rt3 54 r spss

我正在尝试学习R并想要引入一个SPSS文件,我可以在SPSS中打开它.

我试过使用read.spssfrom foreign和spss.getfrom Hmisc.两条错误消息都是相同的.

这是我的代码:

## install.packages("Hmisc")
library(foreign)

## change the working directory
getwd()
setwd('C:/Documents and Settings/BTIBERT/Desktop/')

## load in the file
## ?read.spss
asq <- read.spss('ASQ2010.sav', to.data.frame=T)
Run Code Online (Sandbox Code Playgroud)

由此产生的错误:

read.spss中的错误("ASQ2010.sav",to.data.frame = T):读取系统文件头的错误此外:警告消息:在read.spss("ASQ2010.sav",to.data.frame = T):ASQ2010.sav:位置0:字符`\ 000'(

此外,我尝试将SPSS文件保存为SPSS 7 .sav文件(之前使用的是SPSS 18).

警告消息:1:在read.spss("ASQ2010_test.sav",to.data.frame = T)中:ASQ2010_test.sav:系统文件2中遇到无法识别的记录类型7,子类型14:在read.spss中("ASQ2010_test. sav",to.data.frame = T):ASQ2010_test.sav:系统文件中遇到无法识别的记录类型7,子类型18

ggl*_*gll 46

我有一个类似的问题,并在提示read.spss帮助后解决了它.使用包memisc,您可以导入一个可移植的 SPSS文件,如下所示:

data <- as.data.set(spss.portable.file("filename.por"))
Run Code Online (Sandbox Code Playgroud)

同样,对于.sav文件:

data <- as.data.set(spss.system.file('filename.sav'))
Run Code Online (Sandbox Code Playgroud)

虽然在这种情况下我似乎错过了一些字符串值,而便携式导入无缝地工作.spss.portable.file索赔的帮助页面:

导入器机制比"foreign"包的read.spss和read.dta更灵活和可扩展,因为大多数文件头的解析都是在R中完成的.它们还适用于高效加载大型数据集.最重要的是,导入程序对象支持此程序包提供的标签,缺失值和描述.

  • 是否有类似于`convert.factors = FALSE`或`use.value.labels = FALSE`的东西? (2认同)

Jaa*_*nus 18

在read.spss似乎是过时的一点点,所以我用包叫memisc.

要实现这一点,请执行以下操作:

install.packages("memisc")
data <- as.data.set(spss.system.file('yourfile.sav'))
Run Code Online (Sandbox Code Playgroud)

  • 我更熟悉data.frames所以我用`data < - data.frame(as.data.set(spss.system.file('yourfile.sav'))包装它.)` (4认同)

Jef*_*een 9

我知道这篇文章很老,但是我也遇到了将Qualtrics SPSS文件加载到R中的问题.R的read.spss代码很久以前来自PSPP,并且暂时没有更新.(而且Hmisc的代码也使用read.spss(),所以那里没有运气.)

好消息是,PSPP 0.6.1应该可以正确读取文件,只要在Qualtrics中的"下载数据"页面上指定"短 - 255(SPSS 12.0及更早版本)"的"字符串宽度"即可.将其读入PSPP,保存新副本,您应该开展业务.尴尬,但免费.

替代文字,


SDa*_*ahm 7

你也可以试试这个:

setwd("C:/Users/rest of your path")

library(haven)
data <- read_sav("data.sav")
Run Code Online (Sandbox Code Playgroud)

如果要从一个文件夹中读取所有文件:

temp <- list.files(pattern = "*.sav")
read.all <- sapply(temp, read_sav)
Run Code Online (Sandbox Code Playgroud)


小智 5

看起来R read.spss实现不完整或破坏.但是,R2.10.1比R2.8.1更好.看起来R对sav文件中的自定义属性感到不满,即使是2.10.1(我最新的).R也可能无法理解文件中的字符编码字段,特别是它可能不适用于SPSS Unicode文件.

您可以尝试在SPSS中打开文件,删除任何自定义属性,然后重新保存文件.您可以使用SPSS命令查看是否存在自定义属性

显示属性.

如果是这样,请删除它们(请参阅VARIABLE ATTRIBUTE和DATAFILE ATTRIBUTE命令),然后重试.

HTH,Jon Peck


Pra*_*bhu 5

您可以使用上述解决方案或您当前使用的解决方案来读取SPSS文件R.只需确保该命令随文件一起提供,即可正确读取.我有同样的错误,问题是,SPSS无法访问该文件.您应确保文件路径正确,文件可访问且格式正确.

library(foreign)
asq <- read.spss('ASQ2010.sav', to.data.frame=TRUE)
Run Code Online (Sandbox Code Playgroud)

就警告信息而言,它不会影响数据.记录类型7用于在较新的SPSS软件中存储功能,以使旧的SPSS软件能够读取新数据.但不影响数据.我已经使用了很多次,数据也没有丢失.

您也可以在http://r.789695.n4.nabble.com/read-spss-warning-message-Unrecognized-record-type-7-subtype-18-encountered-in-system-file-td3000775上阅读此内容.的.html#a3007945