一则R使用过程中的提醒
首先是下载文件,而后分别检查不同包的不同应用函数所读取的表格数据内容的差异。
<br />
## 第一部分<br />
# 数据为WTO的依国别分类的各国进出口数据与概要<br />
system("wget o http://www.wto.org/english/res_e/statis_e/daily_update_e/monthly_trade_e.xls","monthly_trade_e.xls -O e:/temp/monthly_trade_e.xls")</p>
<p>## 第二部分<br />
# 分别载入所要使用的packages<br />
library("RODBC")<br />
library("xlsx")<br />
library("gdata")</p>
<p>## 第三部分<br />
# 3.1使用RODBC的odbcConnectExcel读取文件的"export data"表<br />
odbc_channel <- odbcConnectExcel("e:/temp/monthly_trade_e.xls")<br />
odbc_data_var <- sqlFetch(odbc_channel,"Export data")<br />
view(odbc_data_var)<br />
# 检查从第九列第五行开始,向右检查此行值,会发现均为NA,直到九十二列方为正常值。而实际值应为日期行(详情比对excel检查此文件的export data表相关行)</p>
<p># 3.2使用xlsx的read.xlsx读取文件的"export data"表<br />
xlsx_data_var <- read.xlsx("e:/temp/monthly_trade_e.xls",3)<br />
view(xlsx_data_var)<br />
# 检查其102行到203行,会发现一些"export data"表中没有的值,且重复(详情比对excel检查此文件的export data表相关行)</p>
<p># 3.3使用gdata的read.xls读取文件的"export data"表<br />
gdata_data_var <- read.xls("e:/temp/monthly_trade_e.xls",sheet=3)<br />
view(gdata_data_var)<br />
# 检查其88行到141行,会发现与3.2节类似问题,即出现重复数据(详情比对excel检查此文件的export data表相关行)<br />
</p>
问题:
三种xls读取函数,读取的结果并不一样,且与excel打开所检查的数据内容也有偏差。更有甚者,我测试了WTO发布的此项数据的备份数据表,变化更多。现初步认为是两个问题:第一个可能来自于数据发布方的文件问题,因为有许多xls都是系统生成的,这导致在读取时会发生偏差,这类问题常出现在导入数据库过程中,系统提示“此文件格式有问题”。第二个可能来自于不同的R中的xls读取工具问题,比如3.2节使用的是xlsx读取xls格式文件,可能会出现读取格式错误。
要说明的事项是,对于一些关键功能的函数在使用时还是要保守一点,否则它会给你一个意想不到的结果。比如把"Import data"中的一两条数据添加到"export data"中;
ps:
希望是我这边操作的错误,有兴趣的朋友不妨测试一下。
系统说明:
OS:WINDOWS
R:R-2.15.0
R-GUI:Rstudio 0.97.310