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編程語言 |