有一个 foreign
包,其函数 write.foreign()
可以编写SPS和CSV文件 . SPS文件可以将CSV文件读入包含标签的SPSS . 到目前为止很好,但是该功能存在一些问题:
-
较新的SPSS版本可能会显示错误,您在
DATA LIST
中的格式定义太少 -
如果通过
attr()
存储的数值变量有"labels",则会丢失这些变量 . -
即使SPSS vesion支持最多32767的字符串,如果任何变量中的字符数超过255,函数
write.foreign()
也会停止 . -
如果使用任何字符变量,则为星号(*),但较新的SPSS版本无法处理 .
-
CSV文件以逗号分隔,并且(不)不使用引号,因此字符串中不允许使用逗号(字符)
-
非ASCII字符(例如变音符号)将导致导入崩溃
-
如果您的角色包含任何NA值,您会看到......
...这样的错误消息:
Error in if (any(lengths > 255L)) stop("Cannot handle character variables longer than 255") :
missing value where TRUE/FALSE needed
我花了很多时间,然后发现一个好的帖子(http://r.789695.n4.nabble.com/SPSS-export-in-R-package-foreign-td921491.html)开始并让它变得更好 . 在这里's my result, I' d想与大家分享 .
3 回答
SPSS扩展命令STATS GET R可以将数据帧直接从保存的R工作空间读取到SPSS数据集中 . 如果尚未安装此扩展命令(它将显示在“文件”菜单上),则可以从“实用工具”菜单(统计信息22-23)或“扩展”菜单(统计信息24)进行安装 .
要将R data.frame导出到SPSS,请使用避货包中的
write_sav
:此功能可替代
foreign:write.foreign
来处理上述问题 .Note: 为避免SPSS找到CSV文件的问题,请至少为
datafile
指定完整路径(!)(如果使用原始foreign:write.foreign()
也是如此) .Note: 此脚本将在没有警告的情况下用空格替换字符串中的制表符(TAB)和其他间距(包括CR LF) . 可以考虑使用
GET DATA
而不是麻烦的DATA LIST
来解决这个限制 .Note: 可能有警告
In FUN(X[[i]], ...) : probable complete loss of accuracy in modulus
- 这是指对小数进行计数,可以忽略 .Note:
POSIXlt
和POSIXct
变量尚未由脚本正确处理 .从长远来看,可能会认为更改已合并到
foreign
包中 . 不幸的是,r项目的错误报告系统目前仅限于以前注册的开发人员 .