我有一个数据框,我是通过以这种方式导入.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
有人可以指出问题吗?
答案 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格式的实现。