本节书摘来自华章出版社《R语言数据分析》一书中的第1章,第1.6节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问“华章计算机”公众号查看。
1.6 导入Excel电子表格
在学术界和商业界,除了CSV文件,Excel的xls(或xlsx,最近的一种新称呼)应该是应用最为广泛的进行存储和交换少量数据最为通用的数据格式。它最初源自Microsoft公司独有的二进制文件格式,对其文档的说明非常多(xls指南长达1100页,50M),但是对多种表格、宏及公司的导入不直接,目前为止也是这样。本节将仅探讨与Excel交互的与平台无关的R包。
一种选择是使用前面介绍过的RODBC包,与Excel驱动器交互,查询Excel电子表格。还可以借助第三方工具来访问Excel数据,例如使用Perl自动将Excel文件转换为CSV文件,然后再通过gdata包的read.xls函数导入到R。但有时候在Windows安装Perl过程比较繁琐,因此更多的时候,在Windows平台上人们会使用RODBC。
一些平台独立的基于Java的解决方案也提供了对Excel文件的读写操作,特别是对xlsx文件和Off?ice Open XML文件格式。在CRAN上提供了xlConnect和xlsx两个包来分别读取Excel 2007 以及97/2000/XP/2003文件。这两个包都使用了Apache POI Java API项目,需要主动维护。可以运行在任何支持Java的平台上,而不需要再另外安装Microsoft Excel或Off?ice程序。
另一方面,如果你不希望程序依赖于Perl或Java,则可以使用最新发布的openxlsx包。Hadley Wickham也发布了一个功能相似的包,但是稍微有所变化:readxl包能够读(不能写)xls和xlsx格式的文件。
记住:要为自己的应用选择最合适的工具!例如,如果要读取Excel文件而不希望依赖其他程序,我会选择readxl包,但如果要写入Excel 2003电子表格,并且要进行单元运算或者使用其他一些高级功能,有可能我们不能保存Java依赖关系,就应该选择xlConnect或xlsx包,而非openxlsx包。