R:将数据框导出到SPSS

时间:2014-05-28 00:35:00

标签: r spss

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

data = read.dta("TEAdataSTATA2.dta")

然后我将data写入文本文件:

write.table(b , "mydata.txt" , sep="\t")

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

write.foreign(b , "mydata.txt" , "DerLeew.sps" , package="SPSS")

然而,我收到错误:

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

有人可以指出问题吗?

2 个答案:

答案 0 :(得分:7)

如果你尝试

怎么办?
foreign:::writeForeignSPSS(b , "mydata.txt" , "DerLeew.sps" , 
    varnames=names(b))

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

答案 1 :(得分: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")
 }

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