首先嘗試的是RODBC,不過過程相當不順利 我電腦上安裝的是office 2003,ODBC資料源裡面找不到excel的驅動程式 原因是office是32為版本,安裝的驅動程式無法在64位的win7上使用。 運作c:\windows\sysWOW64\odbcad3 …
1、首先嘗試的是RODBC,不過過程相當不順利
我電腦上安裝的是office 2003,ODBC資料源裡面找不到excel的驅動程式
原因是office是32為版本,安裝的驅動程式無法在64位的win7上使用。
運作c:\windows\sysWOW64\odbcad32.exe後,可以配置32為的ODBC資料源。
按照網上的說明,建立32位的資料源後,無法在R裡面擷取連接配接
conn = odbcConnect(“contacts”)
Warning messages:
1: In odbcDriverConnect(“DSN=contacts”) :
[RODBC] ERROR: state IM014, code 0, message [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
2: In odbcDriverConnect(“DSN=contacts”) : ODBC connection failed
使用odbcConnectExcel方法也失敗了,不支援64位的windows,錯誤如下:
odbcConnectExcel(“c:/r-workspace/contacts.xls”)
Error in odbcConnectExcel(“c:/r-workspace/contacts.xls”) :
odbcConnectExcel is only usable with 32-bit Windows
2、測試使用剪貼闆的讀取excel的方法,是可以的,但總覺得不是好辦法
df = read.table(“clipboard”, header=TRUE, sep=”\t”)
df
name gender address
1 張三 男 北京
2 李四 男 上海
3 王五 女 廣州
4 趙六 女 深圳
5 田七 男 南京
3、成功使用XLConnect的包直接讀取excel檔案,就是這個包依賴于XLConnectJars包,比較大(15.7M)
install.packages(“XLConnect”)
library(“XLConnect”)
df = readWorksheetFromFile(“c:/r-workspace/contacts.xls”, sheet=1, header=TRUE)
df
name gender address
1 張三 男 北京
2 李四 男 上海
3 王五 女 廣州
4 趙六 女 深圳
5 田七 男 南京
4、下面我要說的這種方法,是安裝xlsx包。
大家會發現安裝這樣一個package,本身沒有什麼難度,但是你用不了read.xlsx這個函數。
用的R版本是:3.1.1
原因在于要安裝rJava這個包。而安裝這個包,需要先在電腦裡安裝Java程式才行。
有的時候,安裝了Java還是不行。之前幫人安裝了一下,發現一個小技巧:
如果将Java安裝到和R的安裝檔案一個目錄下,基本就沒有什麼問題,也不存在網上說的:要設定Java環境變量。
另外,大家去Java官網下載下傳的時候,最好是離線安裝,不要選擇線上安裝。
如下gif圖:
安裝Java程式
總結一下成功使用xlsx包的步驟:(樓主的系統是win7 32位的)
1.安裝Java程式(上傳了一個win7 32位系統的Java安裝程式及網址:http://www.java.com/zh_CN/download/windows_offline.jsp)
2.在R裡面輸入:
install.packages("rJava")
install.packages("xlsx")
複制代碼
安裝這兩個包,會提示你還有一個包, “xlsxjars”這個包一般會在這個過程中自動安裝,如果沒有安裝的話,可以再按照上面的指令,安裝一個”xlsxjars”這個包。
3.接下來:
>library(xlsx)
Loading required package: rJava
Loading required package: xlsxjars
複制代碼
出現下面兩個,就算安裝成功了。
接下來就可以使用read.xlsx函數讀取了,具體用法可以:
?read.xlsx
複制代碼
備注:
大家可能覺得讀取xlsx檔案,安裝個Java程式很麻煩的。因為R是開源的軟體,調用其它程式來實作一些更為強大的功能,也是常有的事情。安裝了rJava這個包和Java程式之後,有一個比較好的MINE程式也可以運作的,還可以實作中文分詞等更多功能。
為了以後可以使用更多好的程式,為什麼不能忍一時之費事,而為将來節約更多的時間呢?