2016年11月27日 星期日

R與2017年金雞報喜 ^_^

近日發現有趣的 cowsay 套件, cowsay 是產生ASCII圖片的程式並可顯示一頭牛的訊息 (https://zh.wikipedia.org/wiki/Cowsay)。cowsay 套件內建34種ASCII圖片, 參考以下範例:

> library(cowsay)
> sort(names(animals))
 [1] "ant"          "anxiouscat"   "bat"          "bat2"         "behindcat"   
 [6] "bigcat"       "buffalo"      "cat"          "chicken"      "clippy"      
[11] "cow"          "endlesshorse" "facecat"      "fish"         "frog"        
[16] "ghost"        "grumpycat"    "hypnotoad"    "longcat"      "longtailcat" 
[21] "mushroom"     "pig"          "poop"         "pumpkin"      "rabbit"      
[26] "shark"        "shortcat"     "signbunny"    "smallcat"     "snowman"     
[31] "spider"       "stretchycat"  "trilobite"    "yoda"

使用 cat(cow) 即可畫出一頭牛的圖案.


使用 say("hello world!") 完成可愛的喵星人 ^_^


新的雞年即將來到, 先祝福R友 - 2017年金雞報喜.


# end

2016年9月25日 星期日

R軟體與Shiny Web應用程式設計

課程名程:R軟體與Shiny Web應用程式設計
上課日期:2016年10月22,23日
參考網址:http://w3.iiiedu.org.tw/coursedetail.php?id=MSA331I&l=12&c=MSA331I1601
本課程採用R語言做為Web服務平台,使學員熟悉使用shiny套件建立Web化服務應用,歡迎報名參加。
# end

2016年9月16日 星期五

中文網頁表格擷取,亂碼處理

Problem:

本篇文章討論如何使用R下載網頁的表格資料, 再進行後續處理.

Analysis:

# part 1 設定R語系為C, 以配合中文編碼使用

本例考量 RWEPA 個人簡介(About) 網頁 (http://web.ydu.edu.tw/~alan9956/02person.htm), 該網頁包括專題演講表格, 該表格包括編號,日期,主題,單位/地點,時數等5個欄位, 在R環境中, 可使用 XML 套件的 readHTMLTable 函數讀取網頁表格, 另因中文編碼考量, 先設定 locate, R程式如下:

Sys.setlocale(category="LC_ALL", locale="C")
Sys.getlocale()

# part 2 載入套件,讀取網頁資料

準備使用 XML 套件的 readHTMLTable 函數, 使用時記得加上  encoding="big5", 結果有5個表格, 其中第1個表格是使用的資料集, 因此將 tmp串列的第1個元素取出, 設定 train <- tmp[[1]], R程式如下:

library(XML) # readHTMLTable 函數
# IE: F12 --> line 7: <meta http-equiv=Content-Type content="text/html; charset=big5"> 
# 觀察原始網頁採用 big5, 因此encoding參數設定為 big5
urls <- "http://web.ydu.edu.tw/~alan9956/02person.htm"
tmp <- readHTMLTable(urls, stringsAsFactors = FALSE, encoding="big5")
length(tmp) # length=5
train <- tmp[[1]] # 139*5

# part 3 資料整理

train[1,2] # 顯示亂碼
iconv(train[1,2], "UTF-8", "BIG-5") # 顯示正常

# 中文編碼轉換
train <- as.data.frame(lapply(train, function(x) iconv(x, "UTF-8", "BIG-5")))
names(train) <- c("id", "traindate", "program", "location", "hours")
head(train)

# 匯出資料
write.table(train, file="C:/rdata/train.txt", row.names=FALSE)
# save(train, file="C:/rdata/train.RData") # 亦可儲存成 RData 格式

# R程式:

# title: RWEPA - 讀取網頁表格教育訓練
# date: 2016.9.16

# part 1 設定R語系為C, 以配合中文編碼使用
Sys.setlocale(category="LC_ALL", locale="C")
Sys.getlocale()

# part 2 載入套件,讀取網頁資料
library(XML) # readHTMLTable 函數

# IE: F12 --> line 7: <meta http-equiv=Content-Type content="text/html; charset=big5"> 
# 觀察原始網頁採用 big5, 因此encoding參數設定為 big5

urls <- "http://web.ydu.edu.tw/~alan9956/02person.htm"
tmp <- readHTMLTable(urls, stringsAsFactors = FALSE, encoding="big5")

length(tmp) # length=5
train <- tmp[[1]] # 139*5

# part 3 資料整理
train[1,2] # 顯示亂碼
iconv(train[1,2], "UTF-8", "BIG-5") # 顯示正常

# 中文編碼轉換
train <- as.data.frame(lapply(train, function(x) iconv(x, "UTF-8", "BIG-5")))
names(train) <- c("id", "traindate", "program", "location", "hours")
head(train)

# 匯出資料
write.table(train, file="C:/rdata/train.txt", row.names=FALSE)

# save(train, file="C:/rdata/train.RData") # 亦可儲存成 RData 格式

R程式執行結果:


# end

2016年8月23日 星期二

3D繪圖

R具備強大的繪圖能力, 一般2D繪圖採用 plot( ), 如果想要有3D動態繪圖, 此時可考慮使用scatter3d{car} 與 rgl套件, 達到使用者互動功能. 完成的圖形具備以下二大功能:
1. 滑鼠中間滾輪: 可放大/縮小圖形.
2. 滑鼠左鍵: 可以360度旋轉圖形.

# 3D繪圖
data(iris)
library(car)
library(rgl)
scatter3d(iris$Sepal.Length,
          iris$Sepal.Width,
          iris$Petal.Length,
          group =iris$Species,
          surface = FALSE)
# end

2016年8月22日 星期一

矩陣的條件式篩選

Problem:


在R的資料處理環境中,有時須先篩選符合條件的資料,再進行後續處理,以下說明如何完成此需求.

感謝R友-Mimi 提供此問題.

Analysis:
























本問題是如何找出同時滿足數值大於或等於0.5, 較辛苦的方法是將所有條件用 AND 運算(&)找出其結果. 實務上可考慮邏輯運算特性, 即 TRUE 表示1, FALSE 表示0, 利用 sum( )函數計算加總為12表示該列所有行滿足條件. 因為是每列都要判斷, 因此採用 apply, 第2個參數設定為1表示列運算. 最後以 which 回傳符合條件之指標.











# R code
# 建立矩陣範例 318*12
set.seed(123)
m <- matrix(round(c(runif(318*7), rep(1, 318*5)), 2), ncol=12)
rownames(m) <- paste0("row", 1:318)
head(m)

# 條件篩選
m.check <- (m >= 0.5)
head(m.check)

# 如果整列加總=12,表示所該列所有資料行皆符合篩選條件
ind <- which(apply(m.check, 1, sum) == 12)
ind
m[ind, ]
# end

2016年8月19日 星期五

R台灣2016研討會









本研討會針對R軟體各領域的應用,進行觀摩討論,期使R軟體深植於學術研究與產業活動中。

一、主辦單位:中華R軟體學會、臺灣資料科學與商業應用協會、國立臺北商業大學資訊與決策科學研究所暨資料科學應用研究中心

二、協辦單位:臺北醫學大學管理學院暨大數據研究中心、東吳大學巨量資料管理學院、世新大學數量方法研究暨發展中心中華資料採礦協會、臺灣鑑識科學學會


三、時間:中華民國105年12月23日(星期五)

四、地點:臺北市中正區貴陽街一段56號(東吳大學城中校區)
五、研討會主題(徵稿議題,包含以下領域):
  • 經濟、金融與保險
  • 智能製造
  • 自然語言處理與文字探勘
  • 社群網路分析
  • 心理測驗模式與方法
  • 生態與環境資料分析
  • 貝式推論統計
  • 穩健統計方法
  • 空間統計
  • 時空資料處理與分析
  • 時間序列分析
  • 藥物動力學與生化資料分析
  • 醫學影像與臨床試驗分析
  • 計量化學與計算物理
  • 視覺化與圖形
  • 最佳化與數值方法
  • 基因系統演化學
  • 高效能與平行運算
  • 其他相關應用
六、研討會論文投稿說明:
1. 論文投稿方式請採線上投稿(檔案請以PDF格式之Camera Ready Version上傳)
 論文格式下載:參考研討會網站.
2.本研討會論文可以用中文或英文寫作,報告不限語言,歡迎各方人士踴躍投稿。
七、活動時程:
1. 線上投稿:即日~105/09/20
2. 線上報名:即日~105/12/16
3. 投稿截止日期: 中華民國105年09月20日(二)晚上12點
4. 論文接受通知日期: 中華民國105年11月21日(一)

5. 論文定稿日期: 中華民國105年12月05日(五)

資料如有異動, 以網站公告為主.

2016年4月18日 星期一

2016 臺灣資料分析與產業應用趨勢論壇


2016年3月25日 星期五

R, python, mathlab 常用函數對照表

一般在學習新的程式語言時, 心裡會有個直覺問題, 例: Python 使用 NumPy模組的concatenate函數可執行矩陣的列結合 , 但在R須使用哪個函數? Mathesaurus 網站提供多種免費開放軟體之常用函數對照表, 以下列出三種對照表:
資料來源: Thesaurus of Mathematical Languages, or MATLAB synonymous commands in Python/NumPy, http://mathesaurus.sourceforge.net/