将R中的多行utf-8数据(2900列)输入SPSS

将R中的多行utf-8数据(2900列)输入SPSS,r,excel,csv,utf-8,spss,R,Excel,Csv,Utf 8,Spss,从R到SPSS,是否有一种故障保护方法来获取包含多行utf8文本和多列的单元格数据?最好是保守型 若您说CSV,那个么您可能并没有尝试过用包含多行文本和utf8字符的偶尔单元格传输2700列。这似乎不可能 如果偶尔出现包含多行的单元格,SPSS将失败(将其视为多个案例,DELCASE无法解决此问题,需要您知道列数) OpenOffice可以正确处理字符集和多行,但不能处理那么多的列 Excel可以处理许多列。默认情况下,它将打开逗号分隔的文件,而不是正确地打开制表符分隔的文件,但它会弄乱发音

从R到SPSS,是否有一种故障保护方法来获取包含多行utf8文本和多列的单元格数据?最好是保守型

  • 若您说CSV,那个么您可能并没有尝试过用包含多行文本和utf8字符的偶尔单元格传输2700列。这似乎不可能

    • 如果偶尔出现包含多行的单元格,SPSS将失败(将其视为多个案例,
      DELCASE
      无法解决此问题,需要您知道列数)
    • OpenOffice可以正确处理字符集和多行,但不能处理那么多的列
    • Excel可以处理许多列。默认情况下,它将打开逗号分隔的文件,而不是正确地打开制表符分隔的文件,但它会弄乱发音符号。如果您使用导入功能修复utf-8,它会将多行文本搞糟
  • 如果你说
    xlsx::write.xlsx
    :这是可行的,但需要非常长的时间(10米),在SPSS吃掉生成的xlsx文件之前,我必须手动打开并在Excel中重新保存它们(我还没有发现SPSS不喜欢它们的地方,它认为它们是单列)

  • 我还没有尝试过在Excel或SPSS中设置数据库和使用RMySQL+ODBC,因为这看起来有点过头了。相比之下,ODBC似乎再也不过分了,但现在我怀疑ODBC能否在Excel或SPSS中发挥应有的作用。这是一种行之有效的方法吗

编辑:回复一条建议
foreign::writeForeive

WriteForeive不会直接保存到.sav,它会像这样保存CSV文件
write.table(dfn,file=datafile,row.names=FALSE,col.names=FALSE,sep=“,”,quote=FALSE,na=“,eol=“,\n”)
并生成用于导入的.sps文件


由于我的变量名超过了8个字符(我会通过截断得到重复的名称,2700个变量就不足为奇了。SPSS实际上可以使用我描述的路由来处理这个问题)。如果我使用一个子集来展示已知的缺陷,它会因“无法处理长度超过255的字符变量”而失败,但如果它也因多行字符输入而失败,我也不会感到惊讶,因为SPSS似乎无法在CSV导入期间处理此问题。

我仍然没有走ODBC路线,因为
xlsx
包比预期的工作得更好

为了修复大型表中出现的
java.lang.OutOfMemoryError:java堆空间
错误,我使用了
选项(java.parameters=“-Xmx3g”)
(在加载xlsx库之前)


也就是说,我仍在寻找一个不涉及手动重新保存Excel文档的答案。

您看过
外部
软件包吗?我肯定不会用“故障保护”这个术语来描述它,但它提供了直接从R保存.sav文件的功能。根据我的经验,它通常是有效的,但我没有在复杂的数据集上尝试过它。@David我在上面回答道。我还没有尝试过这个DF,但它根本不起作用(以前也有过问题)。但至少它意识到了它的局限性。我不清楚你为什么CSV失败。为什么OpenOffice与此有关?SPSS可以导入多行文本数据,另一个简单的解决方案是用某种已知的字符集替换换行符和/或回车符,然后再将它们更改回原来的字符集,即使它不能。@AndyW OpenOffice的作用很简单,我将使用它来创建SPSS喜欢的电子表格,但它在这么多列中失败,而Excel在UTF8字符(+多行)中失败。是的,替换换行符可能是一种解决方法。但是,由于SPSS可以处理单元格中的多行文本(在我的测试中,我无法从CSV中正确导入具有不同行数的单元格,但请告诉我如何导入),我(我的老板)希望保留新的行(我可以进行恼人的预处理和后处理,但是
write.xlsx
route更优越)。请参阅
GET DATA
的语法参考,特别是
DELCASE
子命令。如果R提供SPSS语法以及它所导出的任何东西,那么可能只需为
GET DATA
语句添加该行即可。