使用RODBC从xls导入R后验证数据完整性

时间:2011-09-01 03:34:43

标签: r corrupt rodbc

我正在使用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文件的教训,但我怎样才能确定数据不会搞砸,或确保我确实没有导入数据集导入后出错?

感谢。

P.S。我正在考虑将数据帧导出到csv,并将xls导出到csv,然后比较校验和,作为额外的衡量标准,但还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

引用R manual for Data Export/Import

  

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

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