有一个软件包foreign
,其中包含一个函数write.foreign()
,可以写入SPS和CSV文件。SPS文件可以将CSV文件读取到SPSS中,包括标签。目前为止,该函数运行良好,但存在一些问题:
1.较新的SPSS版本可能会显示DATA LIST
定义太少的错误
1.如果有通过attr()
存储的数值变量的“标签”,这些标签将丢失。
1.即使SPSS版本支持最大32767的字符串,如果任何变量中的字符串超过255,函数write.foreign()
也会停止。
1.如果使用任何字符变量,则会有一个星星(*),但较新的SPSS版本无法处理此问题。
- CSV文件以逗号分隔,不能使用引号,因此字符串(字符)中不允许使用逗号
1.非ASCII字符(例如变音符号)将导致导入崩溃
1.如果您有一个包含任何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)来开始并使它变得更好。这是我的结果,我想和你分享。
4条答案
按热度按时间ct2axkht1#
要将R数据.frame导出到SPSS,请使用haven包中的
write_sav
:2hh7jdfx2#
此函数替代
foreign:write.foreign
来处理上述问题。**注意:**为避免SPSS查找CSV文件时出现问题,请至少为
datafile
指定完整路径(!)(如果使用原始foreign:write.foreign()
,也是如此)。**注意:**此脚本将在没有警告的情况下用空格替换字符串中的制表符(TAB)和其他空格(包括CR+LF)。您可以考虑使用
GET DATA
而不是麻烦的DATA LIST
来解决此限制。**注:**可能会有一个警告
In FUN(X[[i]], ...) : probable complete loss of accuracy in modulus
-这是指计算小数,可以忽略。注意:
POSIXlt
和POSIXct
变量尚未被脚本正确处理。从长远来看,这些修改可能会被考虑合并到
foreign
包中,不幸的是,r-project的bug报告系统目前仅限于以前注册的开发人员。3bygqnnd3#
SPSS扩展命令STATS GET R可以从保存的R工作空间直接读取数据框到SPSS数据集。如果此扩展命令尚未安装(它将显示在文件菜单上),可以从实用程序菜单(Statistics 22-23)或扩展菜单(Statistics 24+)安装。
ljo96ir54#
我的发现是:
1.“foreign”无法处理其中包含逗号的值(基本上,它无法像Excel那样处理.csv文件)。
1.'haven'要求r数据集中的名称与SPSS兼容。
我对后者所做的是将它们重命名为Haven found them。它似乎在块中工作:“初始1”至“初始4”“最终1”至“最终4”“复发”和“复发”。