提到 Microarray 的數值分析,就不能不提 R 這個統計軟體,在這個領域中,他的地位就像是在生物統計中的SPSS一樣,絕大多數新開發的演算法,幾乎都可以找到以R 程碼編輯的分析套件(package),R 不用錢,可以在各種平台上執行,在程式的語法上,更是對ARRAY這樣的資料型態,做了最佳化,寫起來非常的簡捷。在我入門時,也著實花了三個月,認真的 跟他交往了一陣子。不過最後還是分手了。 分手的理由是,我是一個著重外表的人,雖然R在程序上很強,可以自動化的處理大量及複雜的演算,可是資料只能以一個個物件的名稱去想像,少了一個方便的 Data sheet 可以隨時看看數據變成什麼樣了,更不能馬上突發奇想, 隨便排序,改幾個數值, 看看資料有沒有什麼潛在的趨勢。這些事在R上,也不是不能做,只是光作個簡單的事,就要寫一堆CODE, 速度上慢了許多,如果我是演算法的開發者,我會選R, 不過,我大多數的時間還是在做資料分析的工作,看不到數字,就沒有FEELING。所以,在短暫交往了一陣之後,還是回去找我的麻吉M$ EXCEL 了。
當OFFICE 2007 出來,打破了原本 63553 行限制後,EXCEL 在ARRAY 分析上更有利了,簡單的Microarray 分析: T test, one way ANOVA, 甚至 hypergeometric test 都可用 EXCEL 搞定,搭配VBA 幾乎無所不能,之前還用VBA 寫了個 畫 Heatmap 的 module, 還有一堆 parsing 相關的巨集。不過,EXCEL 畢竟不是為統計而生的軟體,即便可以用VBA 來解決統計公式的問題,但畫圖仍是件麻煩事,即便是非常簡單的統計圖型,如boxplot,對 EXCEL都不能簡單的解決,還是得乖乖的回去寫R code 出圖。最近在作圖的時侯,發現了一個好東西 REXCEL 可以完美的解決這個問題。
##ReadMore##REXCEL 是由 SunSITE 開發的套件,用以在EXCEL與 R(D)COM 間傳遞資料及命令。R(D)COM 你可以把他當成R的運算伺服器,提供R的後端計算核心,你可以把資料送入,他會按照你的指令把運算結果回傳。當個人使用時,你可以不必搞全套的 R(D)COM, REXCEL 有提供輕量化的解決方案,你可以由這裡下載安裝執行檔 (RSrv250_pl1.exe) 然後執行,就可以完成安裝。
(補充一點, 另忘了要先裝R, 再裝 REXCEL 不然 R(D) COM 沒有法把工作pass 給 R, 就會出現無連線的錯誤訊息。 20080324)
如果你用Office 2007, 可能會遇到一些問題,REXCEL沒辦法把自己加入EXCEL2007的增益集中,所以要手動的加入。 先進入EXCEL 選項,然後按執行。
接下來按 瀏覽 找到 REXCEL 安裝的目錄中XLS 的folder, 選擇 Rexcel.xla 的檔案
接下來 在增益集中就會出現 RExcel 的功能。按 下R Start 就可以啟動 R(D)COM 的核心,你可以想像有一個R在背景執行,接下來你只要把資料跟命令傳回,他就會可以把結果傳回給你了。
舉個例子,想用EXCEL 算 hypergeometric, 在R 中的指令是 phyper( X1,X2,X3,X4,True/False), 在EXCEL中你只要打上, = rapply ("phyper",X1,X2,X3,X4,True/False), X1-4, 你可用數值也可以用
儲存格的位址。結果就跟你呼叫EXCEL的內建函數一樣方便,真是太神奇了!
如果你要跑一堆數字(matrix, array )的計算或是作圖,也很簡單,例如你想畫個A 跟B 數列的Boxplot。
先把數列選起來,按增益集選單或按滑鼠右鍵,選 Put =>Dataframe
然後給這個DataFrame 一個名字, 例如Data01, 這個數列就會一直存在後端的R(D)COM中,直到你關閉它為止。
要怎麼使用這個Data01呢?就跟你平常在R中下指令一樣,直接打上指令的文字(這次不要"="喔!他是以文字的方法傳入),輸入 boxplot(Data01,las=2), 然後選取他叫出R選單,選Run R。
神奇吧!明明是R的繪圖視窗,怎麼從EXCEL中跳出來!呵呵!
然後你可以存圖或用Copy 的方法,把圖型貼在EXCEL上。現在你的EXCEL會畫boxplot 了!
除了作圖,你也可以作其他的計算,像 Qvalue, Limma.....等,他們計算結果要回傳回EXCEL,可以從選單中的 Get 指令中取回。
試一下,把我們剛放進去的Data01 在取回EXCEL。
很容易吧!
REXCEL 確實可以無接縫的把EXCEL跟R 的優點接合在一起,他還有更多的精彩的應用在他內建的DEMO 裡,有興趣的可以自已玩玩!當然,有了EXCEL的界面,不代表你就不必學R language 了,當你做到更複雜的流程時,REXCEL反而會變的綁手綁 腳,不過,就我們這種需求簡單,不過是為了一個hypergeometrix or Boxplot 的小應用,又不想去把檔案轉來轉去的初級使用者,REXCEL真是好物啊!
當OFFICE 2007 出來,打破了原本 63553 行限制後,EXCEL 在ARRAY 分析上更有利了,簡單的Microarray 分析: T test, one way ANOVA, 甚至 hypergeometric test 都可用 EXCEL 搞定,搭配VBA 幾乎無所不能,之前還用VBA 寫了個 畫 Heatmap 的 module, 還有一堆 parsing 相關的巨集。不過,EXCEL 畢竟不是為統計而生的軟體,即便可以用VBA 來解決統計公式的問題,但畫圖仍是件麻煩事,即便是非常簡單的統計圖型,如boxplot,對 EXCEL都不能簡單的解決,還是得乖乖的回去寫R code 出圖。最近在作圖的時侯,發現了一個好東西 REXCEL 可以完美的解決這個問題。
##ReadMore##REXCEL 是由 SunSITE 開發的套件,用以在EXCEL與 R(D)COM 間傳遞資料及命令。R(D)COM 你可以把他當成R的運算伺服器,提供R的後端計算核心,你可以把資料送入,他會按照你的指令把運算結果回傳。當個人使用時,你可以不必搞全套的 R(D)COM, REXCEL 有提供輕量化的解決方案,你可以由這裡下載安裝執行檔 (RSrv250_pl1.exe) 然後執行,就可以完成安裝。
(補充一點, 另忘了要先裝R, 再裝 REXCEL 不然 R(D) COM 沒有法把工作pass 給 R, 就會出現無連線的錯誤訊息。 20080324)
如果你用Office 2007, 可能會遇到一些問題,REXCEL沒辦法把自己加入EXCEL2007的增益集中,所以要手動的加入。 先進入EXCEL 選項,然後按執行。
接下來按 瀏覽 找到 REXCEL 安裝的目錄中XLS 的folder, 選擇 Rexcel.xla 的檔案
接下來 在增益集中就會出現 RExcel 的功能。按 下R Start 就可以啟動 R(D)COM 的核心,你可以想像有一個R在背景執行,接下來你只要把資料跟命令傳回,他就會可以把結果傳回給你了。
舉個例子,想用EXCEL 算 hypergeometric, 在R 中的指令是 phyper( X1,X2,X3,X4,True/False), 在EXCEL中你只要打上, = rapply ("phyper",X1,X2,X3,X4,True/False), X1-4, 你可用數值也可以用
儲存格的位址。結果就跟你呼叫EXCEL的內建函數一樣方便,真是太神奇了!
如果你要跑一堆數字(matrix, array )的計算或是作圖,也很簡單,例如你想畫個A 跟B 數列的Boxplot。
先把數列選起來,按增益集選單或按滑鼠右鍵,選 Put =>Dataframe
然後給這個DataFrame 一個名字, 例如Data01, 這個數列就會一直存在後端的R(D)COM中,直到你關閉它為止。
要怎麼使用這個Data01呢?就跟你平常在R中下指令一樣,直接打上指令的文字(這次不要"="喔!他是以文字的方法傳入),輸入 boxplot(Data01,las=2), 然後選取他叫出R選單,選Run R。
神奇吧!明明是R的繪圖視窗,怎麼從EXCEL中跳出來!呵呵!
然後你可以存圖或用Copy 的方法,把圖型貼在EXCEL上。現在你的EXCEL會畫boxplot 了!
除了作圖,你也可以作其他的計算,像 Qvalue, Limma.....等,他們計算結果要回傳回EXCEL,可以從選單中的 Get 指令中取回。
試一下,把我們剛放進去的Data01 在取回EXCEL。
很容易吧!
REXCEL 確實可以無接縫的把EXCEL跟R 的優點接合在一起,他還有更多的精彩的應用在他內建的DEMO 裡,有興趣的可以自已玩玩!當然,有了EXCEL的界面,不代表你就不必學R language 了,當你做到更複雜的流程時,REXCEL反而會變的綁手綁 腳,不過,就我們這種需求簡單,不過是為了一個hypergeometrix or Boxplot 的小應用,又不想去把檔案轉來轉去的初級使用者,REXCEL真是好物啊!
感謝您的解說, 獲益良多 :)
回覆刪除這幫了我統計作業的大忙 狂推!! BOXPLOT花了我好多時間
回覆刪除在EXCEL上 R真方便
版主您好,謝謝您的分享.
回覆刪除我在使用上遇到一點小問題,想請教您.
1.我的excel是2003版,不知是否是版本關係,我在excel上執行R的作圖指令,圖形是出現在R視窗裡,並不是excel裡.而且想要用insert current R plot指令把圖形傳回excel時,就會出現錯誤訊息,說insert功能不可用.我不知道問題出在哪裡, 我也想直接作圖在excel上,如果版主知道如何解決,麻煩請教教我.
2.我可以在sheet1寫指令,而結果出現在sheet2嗎?
如果可以要怎麼設定呢?
感謝您的解答!!謝謝!!
板主回覆:
回覆刪除謝謝,你們的回應是我發文的動力,只是想作的事太多,時間太少....
板主回覆:
回覆刪除R 作圖的結果是放在 R視窗中, 要手動 Copy 到 Excel 中, R(COM)回傳的物品主要是以數值資料為主, 對 EXCEL 而言像是呼叫外部的 Function 得到一個回傳的值, 所以你想要作的回傳圖形以及指定輸出的Sheet並不容易作到, 除非利用VBA or Macro 來實現。