是否有一种故障安全方法来获取包含多行 utf8 文本的单元格的数据,其中包含从 R 到 SPSS 的许多列?最好使用保守类型。
如果您说 CSV,您可能没有尝试过传输 2700 列,其中偶尔包含多行文本和 utf8 字符的单元格。这似乎是不可能的。
- 如果偶尔有包含多行的单元格,则 SPSS 失败(将其视为几种情况,
DELCASE
无法解决此问题,并且需要您知道列数)。 - OpenOffice 可以正确处理字符集和多行,但它不能处理那么多列。
- Excel 可以处理许多列。它将默认打开逗号分隔的文件,而不是正确打开制表符分隔的文件,但它会破坏变音符号。如果您使用导入功能来修复 utf-8,它会破坏多行文本。
- 如果偶尔有包含多行的单元格,则 SPSS 失败(将其视为几种情况,
如果你说
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 导入期间处理此问题。