R語言如何導入Excel的數據?

我試了好多次都沒有成功,不知道大家有什麼好的方法


以下擴展包可以讀取xlsx文件:

  • CRAN - Package xlsx

  • awalker89/openxlsx · GitHub
  • CRAN - Package RODBC 通過 odbcConnectExcel2007 連接到xlsx表格,然後通過SQL選擇表格中的數據
  • hadley/readxl · GitHub 最新的一個擴展包,可以跨平台、無依賴地讀取xls, xlsx中的表格數據。


嘗試了3種操作,把代碼及過程貼出來,僅供參考:

建立一個Excel表,命名為zhihu.xlsx,簡單輸入幾行幾列內容如下,sheet名字為nba:

讀取方法1:使用xlsx包

library(xlsx)
read.xlsx("zhihu.xlsx",sheetName="nba",header=T)
#需要注意:文件路徑,文件編碼等問題

結果顯示如下:

讀取方法2:使用剪切板

首先,打開zhihu.xlsx,選中要讀取的內容並右鍵複製,然後在Rstudio中輸入代碼如下,

read.table("clipboard",header=T)

輸入結果如下:

讀取方法3:將Excel另存為csv文件

首先,打開zhihu.xlsx,將文件另存為zhihu.csv,然後在Rstudio中輸入代碼如下,

read.csv("zhihu.csv",header=T)

輸出結果如下:

以上!

最後:以上僅為小例子,較簡單!需要注意,實際問題要複雜的多,許多參數需要根據實際情況等設置。供你參考!


數據交換建議使用CSV,具有通用性和準確性。


其實上面寫得已經很多了,我這裡只作一些簡單的補充:

1、如果想直接調用EXCEL2007版本以上的文件,而你計算機上又沒配置java環境的話,就可能碰到這樣的情況;

2、如果你數據量不太大的話,現在EXCEL表格中進行剪切: ctrl+C

然後運行read.table("clipboard",header=TRUE,……) ,後面的參數你自己學著設置

3、最後是如果數據量比較大的情況,可能會有十幾萬條吧,反正我暫時還沒有碰到百萬條的EXCEL表單,保存成csv文件【這個其實與stata的數據提取基本上一樣】,

這裡我接前面的稍微提示一下,最好在D或者E盤專門開個以英文名字命名的文件夾,提取路勁 E:R 【R的路徑是\ 不是 】

然後就運行y&<- read.csv("E:\R\123.CSV",header = FALSE)

結果如下:

結果非我原創,只是總結別人經驗的基礎上,進行了稍微總結,希望高人進行更完善的補充


rodbc,readxl,或者保存成csv格式都行


比較傳統的方法是把excel文件保存成csv格式,即逗號分隔文件

然後用R裡面的read.csv讀取

其實現在有很多package提供直接讀取excel功能

比如說gdata 的read.xls


安裝xlsx擴展包。(需要先裝java,系統會自動提示你)

之後library(xlsx),使用read.xlsx就可以了~


大部分的回答都是載入包之後再輸入代碼導入,個人比較認同的是openxlsx包,不需要另外安裝java包之類的。

但是這裡我來補充一個互動式的辦法:

環境:RStudio 3.4

第一次導入R會提示需要安裝包,直接點擊確認,R會幫你安裝好。

安裝成功之後:

Import Dataset &> From Excel file,會彈出以下窗口:

在Browser處選擇你要導入的Excel文件,導入選項那裡根據自己表格的特點勾選,然後點擊Import就搞定啦。見下圖:

是不是很簡單呢[壞笑]


- RODBC包

library(RODBC)
con &<- odbcConnectExcel2007(file) con &<- odbcConnectExcel(file) sqlTables(con) # 查看excel文件中sheet的名稱 sqlFetch(con, sheet_name) odbcClose(con)

**當文件中的某列包含不同類型的數據時,讀取的數據將變為NA,只能選擇其他的數據讀取方式。RODBC包最多能讀取的列只有280列,多出的將丟棄,遇此類情況同樣只能選擇其他的包。**

- xlsx包

library(xlsx)
read.xlsx(file, sheet_index, encoding)

**效率低,容易出現內存不夠用**

- openxlsx包

library(openxlsx)
read.xlsx(file, sheet_index)

**不能讀取xls文件**

- gdata包

library(gdata)
read.xls(file, fileEncoding, sep)

**基本只能處理utf8編碼**

- readxl包

library(readxl)
read_excel(file, coltype)

**不能讀取xls**


兩種方式我覺得比較好。

如果是全部讀取,就用read.csv("文件路徑"),當然這需要先把文件另存為csv格式的。

如果只是讀取一部分,可以在Excel里先把需要的部分圈住,然後複製下,再用read.table("clipboard")命令就可以了。

其他的就是載入一些程序包,上面有人提過了,就不多說。


初學,想來問個問題,如圖,13zf是excel里的第一行(列名),這個表是自己做得,之前用別人的表沒問題。轉成csv也是一樣問題


XLConnect.


用openxlsx包裡面的read.xlsx函數簡直不要太方便


【openxlsx函數】

嘗試過多種Excel數據導入R中的辦法。最有用的還是openxlsx函數。

舉個例子

代碼

1.install.packages(openxlsx)
2.library(openxlsx)
3.Claimdata &<- read.xlsx("1.xlsx", sheet = 1) 4.Claimdata

結果


剛才查了這個問題,然後發現:

一句代碼就可以啦。

data &<- read.csv("文件名.csv")

excel裡面的內容就保存在data裡面了。


還是readxl里的read_excel好用,兼容.xls 和 .xlsx,自動轉換日期格式,感覺比openxlsx好

==============我是更新線==================

xlsx里的read.xlsx要用java,有時會爆內存而且速度較慢。

目前感覺用openxlsx包里的read.xlsx比較好(若excel中有時間格式的數據,讀完後再用openxlsx的convertToDate轉成R的日期格式)。


保存到數據框里啊


用read.table函數吧數據存儲到數據框中,或者用scan函數吧數據存儲到矩陣中。


通常是把data轉成csv格式,然後用read.csv()讀


見圖裡代碼,知乎會過濾R代碼更


推薦閱讀:

需要頻繁使用Microsoft Office 2013,使用macbook pro會遇到哪些問題?
Excel VBA 如何快速學習?
哪裡有免費的 Excel 教程?
CEO,財務總監,市場總監,採購總監,生產總監的工作分別是什麼?涉及到的電子表格(EXCEL)又有那些?
有哪些系統學習excel的書?

TAG:MicrosoftExcel | R編程語言 |