Microarray 如何在 EXCEL 中執行 R 程序及做 BOX plot

提到 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 了!

Metafile past


除了作圖,你也可以作其他的計算,像 Qvalue, Limma.....等,他們計算結果要回傳回EXCEL,可以從選單中的 Get 指令中取回。


試一下,把我們剛放進去的Data01 在取回EXCEL。



很容易吧!



REXCEL 確實可以無接縫的把EXCEL跟R 的優點接合在一起,他還有更多的精彩的應用在他內建的DEMO 裡,有興趣的可以自已玩玩!當然,有了EXCEL的界面,不代表你就不必學R language 了,當你做到更複雜的流程時,REXCEL反而會變的綁手綁 腳,不過,就我們這種需求簡單,不過是為了一個hypergeometrix or Boxplot 的小應用,又不想去把檔案轉來轉去的初級使用者,REXCEL真是好物啊!

留言

  1. 感謝您的解說, 獲益良多 :)

    回覆刪除
  2. 這幫了我統計作業的大忙 狂推!! BOXPLOT花了我好多時間
    在EXCEL上 R真方便

    回覆刪除
  3. 版主您好,謝謝您的分享.
    我在使用上遇到一點小問題,想請教您.
    1.我的excel是2003版,不知是否是版本關係,我在excel上執行R的作圖指令,圖形是出現在R視窗裡,並不是excel裡.而且想要用insert current R plot指令把圖形傳回excel時,就會出現錯誤訊息,說insert功能不可用.我不知道問題出在哪裡, 我也想直接作圖在excel上,如果版主知道如何解決,麻煩請教教我.

    2.我可以在sheet1寫指令,而結果出現在sheet2嗎?
    如果可以要怎麼設定呢?

    感謝您的解答!!謝謝!!

    回覆刪除
  4. 板主回覆:
    謝謝,你們的回應是我發文的動力,只是想作的事太多,時間太少....

    回覆刪除
  5. 板主回覆:
    R 作圖的結果是放在 R視窗中, 要手動 Copy 到 Excel 中, R(COM)回傳的物品主要是以數值資料為主, 對 EXCEL 而言像是呼叫外部的 Function 得到一個回傳的值, 所以你想要作的回傳圖形以及指定輸出的Sheet並不容易作到, 除非利用VBA or Macro 來實現。

    回覆刪除

張貼留言