R:将数据框导出到SPSS

kol*_*nel 1 r spss

我有一个数据框,我通过以这种方式导入.dat Stata文件创建:

data = read.dta("TEAdataSTATA2.dta")
Run Code Online (Sandbox Code Playgroud)

然后我写data一个文本文件:

write.table(b , "mydata.txt" , sep="\t")
Run Code Online (Sandbox Code Playgroud)

然后我使用我创建的文本文件以这种方式创建SPSS文件:

write.foreign(b , "mydata.txt" , "DerLeew.sps" , package="SPSS")
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误:

Error in writeForeignSPSS(df = list(studyid = c("P0008", "P0018", "P0031",  : 
  I cannot abbreviate the variable names to eight or fewer letters
Run Code Online (Sandbox Code Playgroud)

有人可以指出问题吗?

MrF*_*ick 7

如果你尝试怎么办?

foreign:::writeForeignSPSS(b , "mydata.txt" , "DerLeew.sps" , 
    varnames=names(b))
Run Code Online (Sandbox Code Playgroud)

看起来这种方法会绕过变量收缩.只需确保您的SPSS版本可以打开它.


Jon*_*han 6

SPSS过去只支持8个或更少字符的变量名.看起来代码正在为这个旧版本的SPSS编写代码.它试图将变量缩短为较短,但在您的情况下它会失败.

部分代码:

 if (is.null(varnames)) {
     varnames <- abbreviate(names(df), 8)
     if (any(sapply(varnames, nchar) > 8))
         stop("I cannot abbreviate the variable names to eight or fewer letters")
     if (any(varnames != names(df)))
         warning("some variable names were abbreviated")
 }
Run Code Online (Sandbox Code Playgroud)

在调用此函数之前,您可能需要将变量重命名为更短,或者尝试查找可以编写较新格式的SPSS的实现.