我有一个数据框,我通过以这种方式导入.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)
有人可以指出问题吗?
如果你尝试怎么办?
foreign:::writeForeignSPSS(b , "mydata.txt" , "DerLeew.sps" ,
varnames=names(b))
Run Code Online (Sandbox Code Playgroud)
看起来这种方法会绕过变量收缩.只需确保您的SPSS版本可以打开它.
SPSS过去只支持8个或更少字符的变量名.看起来代码正在为这个旧版本的SPSS编写代码.它试图将变量缩短为较短,但在您的情况下它会失败.
部分代码:
Run Code Online (Sandbox Code Playgroud)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的实现.
| 归档时间: |
|
| 查看次数: |
3789 次 |
| 最近记录: |