1

我正在使用 RODBC 导入具有 ~10000 行和 ~250 列的 xls 文件,使用以下脚本:

channel <- odbcConnectExcel(xls.file="s:/demo.xls")
demo <- sqlFetch(channel,"Sheet_1")
odbcClose(channel)

在导入过程中,我打开并关闭了那个 xls 文件。

作为预防措施,我检查了 R 和 xls 文件本身的行数,只是为了确保导入没有损坏,是的,行数保持不变,所以我假设导入过程正常。

当我开始对数据进行制表时出现问题,我意识到即使行号是相同的,有些行实际上已被破坏,我有一个UID内部,并意识到在数据帧的后面部分,UID 被搞砸了(例如同一行被复制两次)。

我再次重新导入文件,不敢打开或关闭xls文件,这次一切顺利。

我已经学到了在 RODBC 读取 xls 文件时永远不要打开或关闭它的教训,但是我如何确保数据不会被弄乱,或者确保我确实没有错误地导入数据集,之后是进口的吗?

谢谢。

PS我正在考虑将数据帧导出到csv,并将xls也导出到csv,然后比较校验和,作为一种额外的措施,但是还有其他方法吗?

4

1 回答 1

1

我使用包中的read.xls函数gdata(使用`install.packages(gdata)'安装)。

如果我是正确的,这允许您从未打开的 Excel 文件中读取。它是一些 Perl 模块的包装器,因此它可能取决于您是否安装了这些模块是否适合您。

引用数据导出/导入的 R 手册

Perl 用户贡献了一个模块 OLE::SpreadSheet::ParseExcel 和一个程序 xls2csv.pl 来将 Excel 95–2003 电子表格转换为 CSV 文件。包 gdata 在其 read.xls 函数中提供了一个基本的包装器。安装合适的 Perl 模块后,此功能还可以读取 Excel 2007 电子表格。

一般来说,我发现将数据从 Excel 导入 R 的最安全方法是通过 csv 导出。

于 2011-09-01T14:39:27.593 回答