天天看點

《R語言資料分析》——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包。