R軟體的資料排列

R 是以行來排列資料的語言,舉例來說:先建一 3X4 的二維矩陣。

> x <- matrix(1:12,3,4); x

矩陣中的資料預設就是依序以行來排列完成。今欲計算每列四筆資料的平均數與中位數,運用 apply 函數如下:

> myMeanNMedian <- function(x) (mean(x), median(x))

> y <- apply(x, 1, myMeanNMedian);y

 

讀者可看到各列的平均數與中位數也是以縱行的方式依序排列。apply 函數也可以計算每行三筆資料的平均數與中位數:

> z <- apply(x, 2, myMeanNMedian); z

 

此處各行的平均數與中位數還是以縱行的方式依序排列。瞭解其排列方式後我們可以將其各列與各行命名:

> dimnames(y)1 <- c('Mean', 'Median')

> dimnames(y)2 <- c(paste('Row', 1:3, sep=' '))

> dimnames(z)2 <- c(paste('Column', 1:4, sep=' '))

 

也可以將 y 轉置一下

> t(y)

y 與 t(y)哪一種呈現方式較符合您的直覺呢?

 

資料來源:Spector, P. (2008), Data Manipulationwith R,Springer.

撰文者:
鄒慶士 博士
現任:
北商資訊與決策科學所教授
中華 R 軟體學會理事長
信箱:
vince.tsou@gmail.com

OpenOffice.org與odfWeave

f:id:DataScience:20140807104523p:plain

 

OpenOffice.org(OO.o)為一開放源碼的桌上生產力套裝軟體,它可以安裝在所有的作業平台上。OO.o 可讀取大多數的文件格式(.odt,.rtf,.txt,.html,.xml 等),當然也包括.doc 與.docx 檔。OO.o 的標準附加檔名為.odt,是開放文件文本(Opendocument text)的英文縮寫

 

R軟體中odfWeave 套件的同名函數可產生內含R 輸入指令與輸出結果的.odt檔,使用者無須在.odt 文檔中鍵入與編排R 指令與輸出結果。當資料更新時,只要重新編譯,即可產生新的報告文檔。而且產生的.odt 文檔,如同其他的OO.o文檔,都可以開啟OpenOffice.org 加以編輯。以下說明以OO.o 編排資料分析報告之步驟:

1. 以OO.o 的.odt 文件撰寫您的報告(檔名以infile.odt 為例),將之儲存在工作目錄中。

2. 在.odt 文件之適當位置插入R 指令區塊,頭尾請分別加上<<>>=與@,例如:

<<>>=
X<-rnorm(10)
Mean(X)
@

3. 開啟R軟體並執行下列指

>library(odfWeave)
>odfWeave(file=”infile.odt”,dest=”outfile.odt”)

4.編譯完成的outfile.odt 位於工作目錄下,其中包含R 的輸出結果,您可以開啟它進行檢視或修改。

 

我們在 OO.o 的兄弟套件 LibreOffice for Mac OS X 上順利完成上述測試,可惜的是目前中文型無法正常顯示,且 Windows 平台上並無 odfWeave 套件!odfWeave 尚有許多選項可以加以變化,例如標籤<<echo=FALSE>>=可不顯示R 指令,<<results=hide>>=可隱藏R 輸出結果,詳細內容請參考odfWeave套件說明文件。

  

參考資料:Kuhn, Max (2012), odfWeave Reference Manual, http://cran.at.r-project.org/.

 

撰文者:
鄒慶士 博士
現任:
北商資訊與決策科學所教授
中華 R 軟體學會理事長
信箱:
vince.tsou@gmail.com

能活血造血的工具 versus 安逸的工具

        最近經常在想一個問題,為何我們會settle down在R這個資料分析的工具上?根據KDnuggets最新的調查顯示(2013 Top Languages for analytics, data mining, data science

),R的使用比例已經連續三年攀升,目前高達60.9%,超過六成了(http://www.kdnuggets.com/2013/08/languages-for-analytics-data-mining-data-science.html)!話雖如此,R絕對不是萬能無缺的!但它無疑是個能造血活血的工具,可以持續提升我們資料解析的能力。舉個例子來說,kmeans是群集分析(clustering analysis)中經典的算法,光stats包中的kmeans函數就涵蓋四群學者的不同算法!不僅如此,CRAN (Comprehensive R Archive Network)中其他的包還可以進行kmeans++, k-medoids, kernel kmeans...等延伸研究,所以除非妳(你)想安逸,否則會被它一步一步地往前推。

       再舉一個例子,昨晚我想把最近鄰居(nearest neighbor)的思維,融入多目標微粒群算法(multi-objective particle swarm optimization, MOPSO)之全域最佳解挑選機制中。胡亂搜了一下,就發現有一個名為FNN的包 (Fast Nearest Neighbor Search Algorithms and Applications),可以快速幫我挑出各粒子最接近的非凌越解。不到十分鐘光景,我就完成了我研究的coding工作!最後,我還複習了因為分類速度緩慢,而惡名昭彰的k-nearest neighbor (knn)分類模型。並且學習到爾後資料量較大的knn分類模型,可以考慮用這個包來實現。

        依稀記得一個補習班的廣告詞:好的老師帶你上天堂,平庸的老師讓你原地踏步,.....等等云云。人人一定都希望經常遇見好的老師,但好老師背後成功的原因一定是授之以漁,而非授之以魚。別的工具不是不好,而是哪個相對較優!能活血造血的工具無疑可以成為我們的老師,所以我一直強調跨領域資料分析師或是資料科學家一定要先慎選工具,再去投注寶貴的時間和金錢在艱辛的學習過程中。

Big Data Analytics還是Data Analytics

        Big Data (巨量資料,或稱大數據) 已經成為一個 hype ! 但我經常在想一個問題,真的人人(或每家公司)都有巨量資料需要分析嗎?我懷疑!況且小到中量的數據都理解不了,或玩不動,如何開大車呢!所以我覺得Data Science (資料科學,或稱數據科學) 的價值應該在於培養個人與組織資料有感 (data sensitive) 的基本能力,並逐步孕育資料解析的思維 (data-analytic thinking),才能活化充斥在我們周遭的資料,進而轉成可以行動的方案。Data Science包含Big Data Analytics,但並不是它唯一的內涵,反而Data Analytics會是Data Science的重要成分。因此,我在今年「2014 資料科學與產業應用研討會」中提出了「壹資料、貳工具、參模型」的口號,嘗試從務實面向幫助大家了解 Data Analytics,以下將全文貼出,請大家批評指教!

        資料科學是一門跨領域的匯聚科學,混合多種資料並搭配各類模型進行資料組織、解析與視覺化等處理,並將其中的價值傳達給相關人士。本研討會旨在邀請產業與學術界已有資料科學實務經驗之專業人士蒞會分享,藉此集聚對資料科學有興趣之各界人士,共同迎向植基於資料的產品與服務提供新紀元。

        資料科學家的主要任務是預測建模(predictive analytics),他們精通資料結構、運算邏輯、物件導向程式設計、自然語言與影像處理等資訊技術,運用統計模型、機器學習與作業研究(亦稱為運籌學)等建模技巧,熟捻會計、財務、行銷與管理等商業語言,藉以向公司各階層人士溝通。資料有感是資料科學家的基本能力,他們負責孕育組織的資料解析思維,努力活化顧客留下的資料軌跡(trail of data exhaust)。他們並非立即處理海量資料,而是將大問題分解成小問題,以「小處著眼、反覆加值」的機敏彈性流程,逐步邁向構築資料產品(data products)目標。所謂「工欲善其事,必先利其器」,因此,資料科學家必須慎選工具,不斷地進行「做中學、學中做」的良性循環,努力跨出習慣領域,追求融會貫通。也就是說,資料科學家不光要懂很多(multidisciplinary),還要抓住不同領域的共通源頭(convergent),才不會在浩瀚的數據海洋中迷失了方向!所以,如何在組織中培育跨領域的資料科學家團隊,也是當前許多行業取得競爭優勢的重要策略。

        值此2014 Data Science and Industrial Applications研討會舉辦之際,我們認為台灣相關的產業應朝著「壹資料、貳工具、參模型」的方向邁進:「一」心向著資料理解的根本要務前進,精通至少「兩」種彈性的分析工具,掌握統計、機器學習與運籌學等「三」大類模型,大步邁向資料驅動的決策釐定新紀元。