0

是否有一种故障安全方法来获取包含多行 utf8 文本的单元格的数据,其中包含从 R 到 SPSS 的许多列?最好使用保守类型。

  • 如果您说 CSV,您可能没有尝试过传输 2700 列,其中偶尔包含多行文本和 utf8 字符的单元格。这似乎是不可能的。

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

  • 我还没有尝试在 Excel 或 SPSS 中设置数据库并使用 RMySQL + ODBC,因为那时它似乎有点矫枉过正。相比之下似乎不再那么矫枉过正,但现在我怀疑 ODBC 是否会在 Excel 或 SPSS 中做它应该做的事情。这是一种行之有效的方法吗?

编辑:回复评论建议foreign::writeForeign

writeForeign 不会直接保存到 .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 导入期间处理此问题。

4

1 回答 1

0

我还没有走 ODBC 路线,因为这个xlsx包比预期的要好。

为了解决java.lang.OutOfMemoryError: Java heap space大表中出现的错误,我使用options( java.parameters = "-Xmx3g" )了(在加载 xlsx 库之前)。

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

于 2013-09-18T19:38:56.320 回答