2017年9月10日 星期日

R讀取中文檔案產生亂碼等錯誤問題

主題: R讀取中文檔案產生亂碼等錯誤問題

說明:

# read.table
# encoding="UTF-8-BOM"
# ANSI
  • 感謝R友-阿賢提供 encoding="UTF-8-BOM"解決亂碼問題.
  • 使用R讀取文字檔時, 有時會遇到資料匯入有錯誤訊息或中文亂碼問題.
  • 資料來源: https://data.gov.tw/dataset/35131, 匯入 open data 空氣品質監測小時值(一般污染物,每日更新) 所產生的問題與解決方式.
  • 匯入資料 read.table {utils} 常用參數:
    (1). fill = TRUE --> 使用時機: 錯誤訊息為 line x did not have xxx elements.
    (2). encoding --> 結果為亂碼.
    (3). fileEncoding  --> 結果為亂碼.
  • 考慮 Windows 執行環境, 如果有亂碼問題, 最簡單的解決方式之一是使用記事本開啟檔案, 另存新檔 畫面中, 編碼改為 ANSI.


  • 使用 Notepad++ [https://notepad-plus-plus.org/zh/] 開啟檔案, 在視窗右下角狀態列會有"UTF-8-BOM"編碼, 此時可加上 encoding 或 fileEncoding 參數, 本例使用 fileEncoding = "UTF-8-BOM" 參數即可完成匯入資料.


  • 另可參考: 資料集為CSV檔,打開來為亂碼,怎麼辦? https://data.gov.tw/node/18765
  • 結論: 使用另存ANSI編碼或加入fileEncoding="UTF-8-BOM"參數應該可以解決亂碼問題.
# 執行畫面:



# R程式碼:
x1 <- read.table("ATM00626_20170910170405.csv", header=TRUE, sep=",") # line 1 did not have 31 elements
x2 <- read.table("ATM00626_20170910170405.csv", header=TRUE, sep=",", encoding="UTF-8") # line 1 did not have 31 elements
x3 <- read.table("ATM00626_20170910170405.csv", header=TRUE, sep=",", encoding="UTF-8", fill=TRUE) # 欄位錯誤
x3[1:3, 1:6]
x4 <- read.table("ATM00626_20170910170405.csv", header=TRUE, sep=",", encoding="UTF-8-BOM") # line 1 did not have 31 elements
x5 <- read.table("ATM00626_20170910170405.csv", header=TRUE, sep=",", encoding="UTF-8-BOM", fill=TRUE) # 亂碼
x5[1:3, 1:6]
x6 <- read.table("ATM00626_20170910170405.csv", header=TRUE, sep=",", fileEncoding = "UTF-8-BOM", fill=TRUE) # OK
x6[1:3, 1:6]
x7 <- read.table("ATM00626_20170829185638-ansi.csv", header=TRUE, sep=",") # OK
x7[1:3, 1:6]
x8 <- read.csv("ATM00626_20170910170405.csv", header=TRUE) # 亂碼
x8[1:3, 1:6]
x9 <- read.csv("ATM00626_20170910170405.csv", header=TRUE, fileEncoding = "UTF-8") # invalid input found
x10 <- read.csv("ATM00626_20170910170405.csv", header=TRUE, encoding = "UTF-8-BOM") # 亂碼
x10[1:3, 1:6]
x11 <- read.csv("ATM00626_20170910170405.csv", header=TRUE, fileEncoding = "UTF-8-BOM") # OK
x11[1:3, 1:6]
# end

2017年9月9日 星期六

網路抓取 R CRAN 套件清單, 使用 ggplot2 套件繪圖, 建立第2個y軸座標.

主題: 網路抓取 R CRAN 套件清單, 使用 ggplot2 套件繪圖, 建立第2個y軸座標.
說明:

# ggplot2
# packages list
# XML
# geom_col
# goem_line
# geom_point
# scale_y_continuous



  • [#1-2] 首先載入 XML, ggplot2 套件.
  • [#3] 使用CRAN網站-依日期排列抓取現有1萬多個套件清單,
    例: http://cran.csie.ntu.edu.tw/web/packages/available_packages_by_date.html
  • [#4] 使用 readHTMLTable {XML} 函數以讀取網站中的套件清單表格, 將結果儲存為mydf資料物件.
  • [#7] 使用 trimws {base} 函數以刪除欄位名稱空白字元.
  • [#8] 原匯入第1欄 Date為字串資料型態, 使用 as.Date {base} 轉換為 日期(Date) 資料型態.
  • [#9] 使用 format {base}並取出套件更新年, 使用 table {base} 以計算各年套件個數.
  • [#10] 使用 cumsum {base}計算累計套件數並新增為 AccumulatedPAckages 欄位.
  • [#11] 使用 names {base} 設定前二欄名稱為 Year, Packages.
  • [#14] 使用 geom_col {ggplot2} 繪製"套件數(年)"長條圖, 另可使用 geom_bar {ggplot2} 繪製.
  • [#15-18] 設定主標題, x軸標題, y軸標題. theme {ggplot2} 可設定標題左右置中.
  • [#19] 使用 scale_y_continuous {ggplot2}可在繪圖區之右側建立y軸第2座標軸. 右側y軸對應長條圖的刻度. ggplot2 採用資料轉換概念, 因此左側y軸第1座標軸的刻度,對應至累計套件數, 其中最大值約11405, 右側最大值約4502, 11405/4502=2.5, 考慮以2倍計算, 即將左側刻度除以2, 轉換為右側刻度, 一般使用 trans = ~. /2 表示.
  • [#21] 使用 annotate {ggplot2} 可加上文字標題.
  • [#22-24] 使用 goem_line {ggplot2} 繪製累計套件數線圖.
  • [#25-27] 使用 goem_point {ggplot2} 繪製累計套件數點圖.

library(XML)
library(ggplot2)
urls <- "http://cran.csie.ntu.edu.tw/web/packages/available_packages_by_date.html"
mydf <- readHTMLTable(urls, stringsAsFactors = FALSE)
str(mydf)
mydf <- mydf[[1]]
names(mydf) <- trimws(names(mydf))
mydf$Date <- as.Date(mydf$Date)
mydf <- data.frame(table(format(mydf$Date, "%Y")), stringsAsFactors=FALSE)
mydf$AccumulatedPAckages <- cumsum(mydf$Freq)
names(mydf)[1:2] <- c("Year", "Packages")
mydf
ggplot(mydf, aes(x = Year)) +
geom_col(aes(y = Packages*2), fill="grey") + 
theme(plot.title = element_text(hjust = 0.5)) + 
xlab("年 (2005.1~2017.9)") + 
ylab("累計套件數") +
ggtitle("CRAN-套件統計圖 - by RWEPA") + 
scale_y_continuous(sec.axis = sec_axis(trans = ~. /2)) + 
theme(axis.title.y = element_text(colour = "blue")) + 
annotate("text", x=13, y=5500, label= "套件數(年)", angle = -90) + 
geom_line(aes(y = AccumulatedPAckages, group = 1), linetype = 2, color = "blue") +
theme(axis.text.x = element_text(face="bold", angle=45),
axis.text.y = element_text(face="bold", color="black", size=10)) +
geom_point(aes(y = AccumulatedPAckages, group = 1), color = "blue") +
geom_text(aes(y = AccumulatedPAckages, label = AccumulatedPAckages), 
vjust = -0.3, size = 4, color = "blue")
# end


2017年8月5日 星期六

圖例中顯示點線混合符號 legend

主題: 使用R繪製圖形時, 圖例採用點線混合同時繪圖

說明:

在 legend 函數中, pch 或 lty  等參數中設定為NA 即可混合使用點線等圖例.



# title: 圖例中顯示點線混合符號
# date: 2017.8.5
x1 <- c(1,2,5,4,3)
x2 <- c(4, 1.5, 1.9, 3, 7)
x3 <- c(5, 6, 9, 3, 1)
ymax <- max(c(x1,x2,x3)) + 1.5
plot(x1, type = "b", pch = 19, lty = 1, col = 1, 
 ylim = c(0, ymax), 
 main="圖例中顯示點線混合符號")
points(x2, pch = 17, col = 2)
lines(x3, lty = 2, col = 4)
legend("topleft", legend = c("x1", "x2", "x3"),
 pch = c(19, 17, NA), lty = c(1, NA, 2),
 col = c(1, 2, 4), text.col = c(1,2,4))
# end

2017年7月27日 星期四

建立 GIF 動畫檔案 animation 套件

animation 套件可以建立動畫檔案, 例: GIF 等檔案, 本篇文章說明使用方法.

下載 ImageMagick 軟體

下載位置 https://www.imagemagick.org/script/download.php , 下載網頁包括 Unix Binary Release, Mac OS X Binary Release, iOS Binary Release 以及 Windows Binary Release, 在 Windows 版本中直接選取 "mageMagick-7.0.6-3-Q16-x64-dll.exe" 下載即可.


安裝 ImageMagick 軟體

ImageMagick安裝過程中, 因為 animation 套件須使用 convert 等方法, 因此在 [Select Additional Tasks] 視窗中記得要勾選 Install legacy utilities(e.g. convert), 按 Next 完成安裝.



安裝 animation 套件

install.packages("animation")

範例1

將要繪圖的函數建立在 saveGIF( ) 函數之中. movie.name 參數可設定匯出GIF檔案名稱.


# install.packages("animation")
library(animation)

# example 1
saveGIF({
  for (i in 1:10) plot(runif(10), ylim = 0:1, col=i)
},  movie.name = "animation_runif.gif")



範例2


# example 2
# reference: http://www.programmingr.com/content/animations-r/

# Set delay between frames when replaying
ani.options(interval=.05)

# Set up a vector of colors for use below 
col.range <- heat.colors(15)

# Begin animation loop
# Note the brackets within the parentheses
saveGIF({
 
 # For the most part, it’s safest to start with graphical settings in 
 # the animation loop, as the loop adds a layer of complexity to 
 # manipulating the graphs. For example, the layout specification needs to 
 # be within animation loop to work properly.
 layout(matrix(c(1, rep(2, 5)), 6, 1))
 
 # Adjust the margins a little
 par(mar=c(4,4,2,1) + 0.1)
 
 # Begin the loop that creates the 150 individual graphs
 for (i in 1:150) {
 
 # Pull 100 observations from a normal distribution
 # and add a constant based on the iteration to move the distribution
 chunk <- rnorm(100)+sqrt(abs((i)-51))
 
 # Reset the color of the top chart every time (so that it doesn’t change as the 
 # bottom chart changes)
 par(fg=1)
 
 # Set up the top chart that keeps track of the current frame/iteration
 # Dress it up a little just for fun
 plot(-5, xlim = c(1,150), ylim = c(0, .3), axes = F, xlab = "", ylab = "", main = "Iteration demo")
 abline(v=i, lwd=5, col = rgb(0, 0, 255, 255, maxColorValue=255))
 abline(v=i-1, lwd=5, col = rgb(0, 0, 255, 50, maxColorValue=255))
 abline(v=i-2, lwd=5, col = rgb(0, 0, 255, 25, maxColorValue=255))
 
 # Bring back the X axis
 axis(1)
 
 # Set the color of the bottom chart based on the distance of the distribution’s mean from 0
 par(fg = col.range[mean(chunk)+3])
 
 # Set up the bottom chart
 plot(density(chunk), main = "", xlab = "X Value", xlim = c(-5, 15), ylim = c(0, .6))
 
 # Add a line that indicates the mean of the distribution. Add additional lines to track
 # previous means
 abline(v=mean(chunk), col = rgb(255, 0, 0, 255, maxColorValue=255))
 if (exists("lastmean")) {abline(v=lastmean, col = rgb(255, 0, 0, 50, maxColorValue=255)); prevlastmean <- lastmean;}
 if (exists("prevlastmean")) {abline(v=prevlastmean, col = rgb(255, 0, 0, 25, maxColorValue=255))}
 #Fix last mean calculation
 lastmean <- mean(chunk)
 }
}, movie.name = "animation_iteration.gif")


# end

個人簡介(About)

簡介

現職: 育達科技大學資訊管理系

姓名: 李明昌 (MING-CHANG LEE)

E-MAIL: alan9956@gmail.com

WEPA首頁

RWEPA首頁

學歷

博士:中原大學 工業與系統工程所

碩士:中原大學 機械工程研究所(工業工程組)

學士:東吳大學 財務工程與精算數學系(原商用數學系)

職稱

助理教授

現職

育達科技大學 資訊管理系(所) 專任助理教授 (2011年8月~迄今)

中華R軟體學會 常務理事 (2012年2月~迄今)

臺灣資料科學與商業應用協會 常務理事 (2013年4月~迄今)

經歷

東吳大學財務工程與精算數學系 兼任教師 (2008年9月~2016年7月)

育達商業科技大學 資訊管理系 專任講師 (2003年8月~2011年7月)

育達商業技術學院 資訊管理系 專任講師 兼任台北進修推廣部註冊組組長 (2001年9月~2003年7月

育達商業技術學院 資訊管理系 專任講師 兼任台北進修推廣部課務組組長 (2000年8月~2003年7月)

崇友實業 行銷企劃專員 (1993年12月~2000年7月)

國航船務代理股份有限公司 海運市場運籌管理員(1992年7月~1993年11月)

研究室

研究大樓 206-6

專長

R/Python語言程式設計與應用、資料視覺化、資料探勘、統計品管與實驗設計、供應鏈管理。

專題演講

編號 日期 主題 單位/地點 時數
=== ==== ==== ======= ====
1 2011年7月4,6,8,11,13日 R統計軟體初階課程教育訓練 國立臺北商業技術學院資訊與決策科學研究所 30
2 2011年11月19日 R統計軟體初階課程教育訓練 輔英科技大學資訊管理系 6
3 2012年5月18日 軟體學習工作坊-R軟體的認識與使用 東吳大學財務工程與精算數學系 3
4 2012年10月17日 統計學與問卷調查專題講座-Using R 新竹市光復高級中學 2
5 2012年11月20日 R軟體-資料包絡分析,決策樹 東吳大學財務工程與精算數學系 2
6 2013年1月21,22日 輕鬆學會R軟體基礎(台北場) 致理技術學院 6
7 2013年5月9,16日 輕鬆學會R軟體基礎 工業技術研究院資通所 6
8 2013年7月3,4日 輕鬆學會R軟體基礎 淡江大學台北校區  6
9 2013年8月5,6日 輕鬆學會R軟體基礎 德明財經科技大學 6
10 2013年8月8,9日 輕鬆學會R軟體-資料探勘 德明財經科技大學 6
11 2013年8月16日 Big Data資料分析首部曲-R軟體實作班#1 資訊工業策進會數位教育研究所 9
12 2013年8月19日 R語言與資料探勘研習會 大華科技大學商務與觀光管理學院 5
13 2013年8月24日 Big Data資料分析二部曲-R軟體與資料探勘 資訊工業策進會數位教育研究所 7
14 2013年9月16,23,30日 R語言講座 國立臺北商業技術學院資訊與決策科學研究所 12
15 2013年10月9日 R在商業管理上的應用 明新科技大學管理研究所 2
16 2013年10月11,18日 R與資料探勘技術 資訊工業策進會數位教育研究所 12
17 2013年10月14,15日 輕鬆學會R軟體-資料探勘 淡江大學台北校區 6
18 2013年11月1,2日 Big Data資料分析首部曲-R軟體實作班#2 資訊工業策進會數位教育研究所 9
19 2013年11月4日 Visualization with R Taiwan R User Group - 政大公企中心 1
20 2013年11月22日 R在生活資訊的應用 苗栗縣大成高級中學資訊技術學程 2
21 2013年11月23日 Big Data資料分析二部曲-R軟體與資料探勘 資訊工業策進會數位教育研究所 7
22 2013年11月30日,12月1日 Big Data資料分析三部曲-R軟體與資料視覺化★1 資訊工業策進會數位教育研究所 7
23 2013年12月17,20日 R與資料探勘技術-第2梯 資訊工業策進會數位教育研究所 12
24 2014年1月22日 R軟體於資料探勘應用實作班 中華電信學院 6
25 2014年1月24日 巨量資料分析-商業分析塑模(首部曲) 聚碩科技 3
26 2014年2月21日 Big Data資料分析首部曲-R軟體實作班#3 資訊工業策進會數位教育研究所 6
27 2014年2月25日 巨量資料分析-商業分析塑模(首部曲) 聚碩科技 3
28 2014年3月8日 Big Data資料分析二部曲-R軟體與資料探勘 資訊工業策進會數位教育研究所 6
29 2014年3月10日 R軟體於資料視覺化應用實作班 中華電信學院 6
30 2014年3月22,23日 Big Data資料分析三部曲-R軟體與資料視覺化★2 資訊工業策進會數位教育研究所 7
31 2014年3月28日 R軟體實作班#4 資訊工業策進會數位教育研究所 6
32 2014年4月12日 R軟體資料探勘 資訊工業策進會數位教育研究所 6
33 2014年4月14日 R軟體於資料探勘應用實作班 中華電信學院 6
34 2014年4月25日 巨量資料分析-商業分析塑模(首部曲) 聚碩科技 3
35 2014年4月26日 R軟體與財金資料分析$1 資訊工業策進會數位教育研究所 7
36 2014年5月14日 資料加值與商務決策 工業技術研究院產業學院 7
37 2014年6月7日 R軟體實作班#5 資訊工業策進會數位教育研究所 6
38 2014年6月27日 巨量資料分析-商業分析塑模(首部曲) 聚碩科技 3
39 2014年6月27日 R軟體資料探勘 資訊工業策進會數位教育研究所 7
40 2014年7月21日 R軟體與NoSQL 資料庫軟體套件應用班 中華電信學院 6
41 2014年7月29,31日 R語言講座 國立臺北商業大學資訊與決策科學研究所 6
42 2014年8月2日 R軟體實作班#6 資訊工業策進會數位教育研究所 6
43 2014年8月15日 R軟體資料探勘 資訊工業策進會數位教育研究所 7
44 2014年8月18日 R軟體於資料探勘應用實作班 中華電信學院 6
45 2014年8月28日 資料加值與商務決策 工業技術研究院產業學院 7
46 2014年8月30日 R軟體與資料視覺化★3 資訊工業策進會數位教育研究所 7
47 2014年9月13日 R軟體與財金資料分析$2 資訊工業策進會數位教育研究所 7
48 2014年9月27日 Python資料探勘實作*1 資訊工業策進會數位教育研究所 7
49 2014年10月8,15日 資料科學與R軟體 東吳大學海量資料分析研究中心 6
50 2014年10月20,23,24日 R軟體基礎與資料探勘 中央氣象局 9
51 2014年10月31日 R軟體與資料探勘應用 真理大學統計與精算學系 2
52 2014年11月1日 R軟體實作班#7 資訊工業策進會數位教育研究所 6
53 2014年11月14,15日 R軟體資料探勘 資訊工業策進會數位教育研究所 10
54 2014年11月17日 資料加值與商務決策 工業技術研究院產業學院 7
55 2014年11月21日 Python資料探勘實作*2 資訊工業策進會數位教育研究所 7
56 2014年11月28日 Data會說話-資料視覺化之應用 真理大學統計與精算學系 2
57 2015年1月18日 R軟體與網頁資料擷取應用@1 資訊工業策進會數位教育研究所 7
58 2015年1月21日 財金資料建模與R,Rmetrics實作 聚碩科技 3
59 2015年1月24日 R軟體實作班#8 資訊工業策進會數位教育研究所 6
60 2015年3月7日 R軟體實作班#9 資訊工業策進會數位教育研究所 6
61 2015年3月14日 Python資料探勘實作*3 資訊工業策進會數位教育研究所 7
62 2015年3月16日 R工具在氣象資料的應用 中央氣象局 3
63 2015年3月23日 資料加值與商務決策 工業技術研究院產業學院 7
64 2015年3月28,29日 R軟體與資料視覺化★4 資訊工業策進會數位教育研究所 14
65 2015年4月12日 R軟體實作班#10 資訊工業策進會數位教育研究所 7
66 2015年4月13,14日 Big Data之處理與分析實務 資訊工業策進會數位教育研究所 14
67 2015年4月19日 R軟體與網頁資料擷取應用@2 資訊工業策進會數位教育研究所 7
68 2015年4月24日 R軟體基礎實作 新光人壽 6
69 2015年4月27日,5月4,11日 R軟體資料視覺化 新光人壽 18
70 2015年6月5日 2015資料科學與產業應用工作坊—互動式分析平台工作坊 中華電信學院 1
71 2015年6月15,22日 R語言與資料加值實作課程 工業技術研究院產業學院 12
72 2015年7月11,12日 R軟體實作班#11 資訊工業策進會數位教育研究所 12
73 2015年7月16,17日 EEC巨量資料處理與分析專業認證教師研習會 財團法人中華民國電腦技能基金會/正修科技大學 16
74 2015年4月22日~7月22日 迴歸分析,模擬與拔靴抽樣,主成分分析,因素分析,對應分析,資料庫與報表輸出 典通資訊 14
75 2015年7月25日 智慧商店整合服務與 Big data應用 新北市政府經濟發展局, 財團法人工業技術研究院 3
76 2015年8月2日 R軟體與網頁資料擷取應用@3 資訊工業策進會數位教育研究所 6
77 2015年8月15,16日 R軟體實作班#12 資訊工業策進會數位教育研究所(高雄) 14
78 2015年8月14,20日 R語言與Hadoop生態系統應用實作 工業技術研究院產業學院 12
79 2015年8月24-26日 巨量資料的分析工具 國家發展委員會 18
80 2015年8月27,28日 EEC巨量資料處理與分析專業認證教師研習會 財團法人中華民國電腦技能基金會/國立台北科技大學 16
81 2015年8月29,30日 R軟體與資料視覺化★5 資訊工業策進會數位教育研究所 12
82 2015年8月31日,9月1~2日 R資料分析與應用-第1期 國家發展委員會 18
83 2015年9月12,13日 Python資料探勘實作*4 資訊工業策進會數位教育研究所 14
84 2015年9月17,24日 R語言與資料加值實作課程 工業技術研究院產業學院 12
85 2015年10月3日 R軟體實作班#13 資訊工業策進會數位教育研究所 6
86 2015年10月23日 R巨量資料分析與應用 台中自然科學博物館 6
87 2015年10月31日,11月1日 R軟體與資料視覺化★6 資訊工業策進會數位教育研究所 12
88 2015年11月7,8日 R軟體實作班#14 資訊工業策進會數位教育研究所(高雄) 12
89 2015年11月25日 R與巨量資料分析 育達科技大學資訊管理系週會講座 1
90 2015年11月28,29日 EEC巨量資料處理與分析專業認證教師研習會 財團法人中華民國電腦技能基金會/嘉南藥理大學資訊管理系 12
91 2015年11月19,26日,12月10日 R與巨量資料分析應用教師研習會 真理大學資訊管理學系 6
92 2015年12月12日 R軟體與網頁資料擷取應用@4 資訊工業策進會數位教育研究所 6
93 2015年12月14,21日 EEC巨量資料處理與分析專業認證研習會 財團法人中華民國電腦技能基金會/靜宜大學統計資訊學系 12
94 2015年12月17日 R與氣象資料視覺化QC應用 中央氣象局 3
95 2015年12月8,22日 R軟體在Big Data與商業智慧之應用 亞東技術學院資訊管理系 6
96 2015年12月26日 R資料分析師-實作Lab TibaMe學習網/國立臺北商業大學 6
97 2015年12月28,30日 R軟體應用於資料分析之探討 明新科技大學資訊管理系 6
98 2015年11月19日~2016年1月7日 EEC巨量資料處理與分析專業認證研習會 財團法人中華民國電腦技能基金會/明新科技大學資訊管理系 24
99 2016年1月9日 R軟體與財金資料分析$3 資訊工業策進會數位教育研究所 6
100 2016年1月14,15日 使用R語言於巨量資料分析應用 中華管理發展協會/育達科技大學資訊管理系 12
101 2016年1月16日 R軟體實作班#15 資訊工業策進會數位教育研究所 6
102 2016年1月20,21日 R語言與資料加值實作課程 工業技術研究院產業學院 12
103 2016年2月2,3,4日 R語言資料加值與RHadoop實作課程 工業技術研究院產業學院(高雄) 21
104 2016年2月16日 RHadoop巨量資料分析實作 正修科技大學資訊管理系 6
105 2016年2月17,19,22日 R軟體與BI工具整合應用 資訊服務(台北) 20
106 2016年3月5日 R軟體實作班#16 資訊工業策進會數位教育研究所 6
107 2016年3月12日 Python資料探勘實作*5 資訊工業策進會數位教育研究所 6
108 2016年3月11,14日 R軟體套件應用基礎班 中華電信學院 12
109 2016年3月19,20日 R軟體實作班#17 資訊工業策進會數位教育研究所(高雄) 12
110 2016年3月26,27日 R軟體與資料視覺化★7 資訊工業策進會數位教育研究所 12
111 2016年3月31日 R軟體與巨量資料分析與應用 東海大學電機工程學系 2
112 2016年4月8,11日 R軟體暨Rcmdr套件統計應用基礎班 中華電信學院 12
113 2016年3月29日,4月12日 R與巨量資料分析 南華大學電子商務管理學系 9
114 2016年4月17日 R軟體與網頁資料擷取應用@5 資訊工業策進會數位教育研究所 6
115 2016年4月15,18日 R語言與資料加值實作課程 工業技術研究院產業學院 12
116 2016年4月23,24日 Python資料探勘實作*6 資訊工業策進會數位教育研究所(高雄) 14
117 2016年5月1日 R軟體實作班#18 資訊工業策進會數位教育研究所 6
118 2016年5月10日 R與社會網路應用 朝陽科技大學校務研究辦公室 3
119 2016年5月9,16日 R與資料探勘應用 龍華科技大學資訊管理系 6
120 2016年5月28,29日 R軟體與資料視覺化★8 資訊工業策進會數位教育研究所 12
121 2016年5月30日 R與巨量資料視覺化應用 台南應用科技大學資訊管理系 1
122 2016年4月20日,5月18日,6月1日 R語言與大數據分析 真理大學資訊管理學系 6
123 2016年5月7,14日,6月4日 R軟體巨量資料分析與應用 朝陽科技大學資訊管理學系 18
124 2016年6月6日 R語言與資料視覺化的應用 元培醫事科技大學校務研究辦公室 7
125 2016年6月18日 資料服務應用研習營-資料分析流程及分析工具介紹 台北市電腦公會 3
126 2016年6月19日 Python資料探勘實作*7 資訊工業策進會數位教育研究所 6
127 2016年6月26日 R軟體實作班#19 資訊工業策進會數位教育研究所 6
128 2016年7月7日 R and Big Data Application Nagoya Sangyo University (日本名古屋產業大學) 2
129 2016年7月15日 R語言之分析實務技巧-實作Lab TibaMe學習網/國立臺北商業大學 6
130 2016年7月23,24日 R軟體與資料視覺化★9 資訊工業策進會數位教育研究所 12
131 2016年7月31日 R軟體與網頁資料擷取應用@6 資訊工業策進會數位教育研究所 6
132 2016年8月10日 大數據分析實務 105年度新竹科學園區科技管理專題講座 3
133 2016年8月13日 R軟體與財金資料分析$4 資訊工業策進會數位教育研究所 6
134 2016年8月14日 R語言之分析實務技巧-實作Lab TibaMe學習網/中央大學 6
135 2016年8月15-18日 R語言與巨量資料分析應用研習 國立高雄海洋科技大學資訊管理系 28
136 2016年8月27日 R軟體實作班#20 資訊工業策進會數位教育研究所 6
137 2016年8月29-31日 R軟體基礎與統計分析應用-第2期 國家發展委員會 18
138 2016年9月3日 Python資料探勘實作*8 資訊工業策進會數位教育研究所 6
139 2016年9月12-14日 R軟體資料處理應用 國家發展委員會 18
140 2016年9月19-21日 R軟體資料探勘與視覺化應用 國家發展委員會 18
141 2016年9月23,26日 R語言與Rcmdr套件統計應用實作課程 工業技術研究院產業學院 12
142 2016年10月1日 R軟體實作班#21 資訊工業策進會數位教育研究所 6
143 2016年10月20日 工業4.0與大數據分析應用 I 龍華科技大學管理學院 2
144 2016年10月22,23日 R軟體與Shiny-Web應用程式設計◆1 資訊工業策進會數位教育研究所 12
145 2016年10月29,30日 R軟體與資料視覺化★10 資訊工業策進會數位教育研究所 12
146 2016年11月7日 R軟體與地理視覺化應用 內政部統計處 6
147 2016年12月8日 工業4.0與大數據分析應用 II 龍華科技大學管理學院 2
148 2016年12月2,9日 Python企業資料分析與預測應用實作 工業技術研究院產業學院 12
149 2016年12月7,14日 EEC巨量資料處理與分析專業認證研習會 財團法人中華民國電腦技能基金會/靜宜大學統計資訊學系 12
150 2016年12月19,26日 R與大數據行銷應用 國立屏東大學行銷與流通管理學系 14
151 2017年1月7日 R軟體實作班#22 資訊工業策進會數位教育研究所 6
152 2017年2月11日 R軟體之金融大數據分析與應用$5 資訊工業策進會數位教育研究所 6
153 2017年2月13日 R軟體實作班#23 資訊工業策進會數位教育研究所 6
154 2017年3月2日 R與資料視覺化應用 靜宜大學統計資訊學系 3
155 2017年3月4日 R軟體實作班#24 資訊工業策進會數位教育研究所 6
156 2017年2月21,23日,3月7,9,11日 機率統計與R語言基礎-第1期 財團法人中華民國證券暨期貨市場發展基金會 18
157 2017年3月14,16,18,21,23日 機率統計與R語言基礎-第2期 財團法人中華民國證券暨期貨市場發展基金會 18
158 2017年3月21日 大數據分析基礎與應用研習班 臺北市政府資訊局 3
159 2017年3月29日 金融大數據技術之教學應用 明新科技大學財務金融系 3
160 2017年4月7日 R與地理資料視覺化應用 龍華科技大學資訊管理系 3
161 2017年3月27,29,31日,4月10,12,14日 機率統計與R語言基礎-第3期 財團法人中華民國證券暨期貨市場發展基金會 18
162 2017年4月27日,5月4日 EEC巨量資料處理與分析專業認證研習會 財團法人中華民國電腦技能基金會/弘光科技大學資訊工程系 6
163 2017年5月13日 Python資料探勘實作*9 資訊工業策進會數位教育研究所 6
164 2017年5月15日 R軟體實作班#25 資訊工業策進會數位教育研究所 6
165 2017年5月16日 R語言與資料視覺化的應用 元培醫事科技大學校務研究辦公室 6
166 2017年5月18日 R語言關聯規則分析與視覺化應用 靜宜大學統計資訊學系 3
167 2017年6月2日 R軟體資料處理應用 元培醫事科技大學校務研究辦公室 7
168 2017年6月11日 R軟體與網頁資料擷取應用@7 資訊工業策進會數位教育研究所 6
169 2017年6月13日 R軟體資料探勘應用 元培醫事科技大學校務研究辦公室 6
170 2017年6月18日 R軟體之金融大數據分析與應用$6 資訊工業策進會數位教育研究所 6
171 2017年6月28,29日 R軟體資料探勘與視覺化應用 嶺東科技大學校務研究辦公室 12
172 2017年7月1日 R軟體實作班#26 資訊工業策進會數位教育研究所 6
173 2017年7月10,11,12日 R軟體基礎與統計分析應用-第3期 國家發展委員會 18
174 2017年7月15,16日 R軟體與資料視覺化★11 資訊工業策進會數位教育研究所 12
175 2017年8月1日 巨量資料分析師-能力鑑定種子師資研習-科目:資料導向程式設計 經濟部/資訊工業策進會(台北) 6
176 2017年8月2日 巨量資料分析師-能力鑑定種子師資研習-科目:資料導向程式設計 經濟部/資訊工業策進會(台中) 6
177 2017年8月3日 巨量資料分析師-能力鑑定種子師資研習-科目:資料導向程式設計 經濟部/資訊工業策進會(高雄) 6
178 2017年8月4日 巨量資料分析師-能力鑑定種子師資研習-科目:資料導向程式設計 經濟部/資訊工業策進會(台北) 6
179 2017年7月29日,8月13日 R軟體與Shiny-Web應用程式設計◆2 資訊工業策進會數位教育研究所 12
180 2017年8月19日 Python資料探勘實作*10 資訊工業策進會數位教育研究所 6
181 2017年8月28日 Python文字探勘實作班 中華電信學院 6
182 2017年8月29-31日 R語言資料處理應用(中階) 國家發展委員會 18
183 2017年9月2日 R軟體實作班#27 資訊工業策進會數位教育研究所 6
184 2017年9月6-8日 R軟體資料探勘與視覺化應用(進階) 國家發展委員會 18
============
Total:1528小時

研究

國際期刊

  1. Shiau, J.Y., Lee, M.C., A Warehouse Management System with Sequential Picking for Multi-Container Deliveries, Computers & Industrial Engineering, Vol. 58, pp. 382-392, 2010. (SCI)
  2. Wee, H.M., Lee, M.C., Yu, J.C.P., Wang, C.E., Optimal replenishment policy for a deteriorating green product: Life cycle costing analysis, International Journal of Production Economics, Vol. 133, Issue 2, pp. 603-611, 2011. (SCI)
  3. H.M. Wee, M.C. Lee, P.C. Yang, R.L. Chung, Bi-level vendor–buyer strategies for a time-varying product price, Applied Mathematics and Computation, Vol. 219, Issue 18, pp. 9670-9680, 2013. (SCI)
  4. Longsheng Cheng, Ching-Shih Tsou, Ming-Chang Lee, Li-Hua Huang, Dingwei Song, and Wei-Shan Teng, Tradeoff Analysis for Optimal Multiobjective Inventory Model, Journal of Applied Mathematics, Vol. 2013, Article ID 619898, 8 pages, 2013. (SCI)
  5. Hui-Ming Wee, Wan-Tsu Wang, Ming-Chang Lee, Leopoldo Eduardo Cárdenas-Barrón, Solving a finite horizon EPQ problem with backorders, Applied Mathematical Modelling, Vol. 37, Issues 14–15, pp. 7876-7882, 2013. (SCI)
  6. Ming-Chang Lee, Hui-Ming Wee, Simon Wu, C. Edward Wang, Rih-Lung Chung, A bi-level inventory replenishment strategy using clustering genetic algorithm, European Journal of Industrial Engineering, Vol. 9, No. 6, pp. 774-791, 2015. (SCI)
國內期刊

  1. 李明昌, 陳品璋, 呂紹嘉, 探討特別檢查困難性質之研究–以某空軍為例, 管理資訊計算, Vol. 4, No. 2, pp. 246-254, 2015.
  2. 藍天雄, 李明昌, 應用系統動態學探討國小國樂團經營與發展之研究, 中華管理發展評論, Special Issue,  June, 2016.
國際研討會

  1. Wee, H.M., Lee, M.C., Yu, J.C.P., Life cycle costing analysis to improve operations and supply chain management of green electronic products, 6th Australian Conference on Life Cycle Assessment, Melbourne, Australia, 2009.
  2. Lee, M.C., Wee, H.M., Optimal bi-level strategies for multiple retailers newsboy, International Conference on Food and Agricultural Supply Chain in Indo-China Region: Science and Technology Point of Views, Thailand, 2010.

國內研討會

  1. 鄒慶士, 李明昌, 黃智合, 楊舒雯, 以賽局理論分析供應鏈中的縱向研發補貼活動, 中國工業工程學會94年度年會暨學術研討會, 中華大學, 新竹市, 台灣, 2005年12月.
  2. 鄒慶士, 李明昌, 賴伯武, 網路媒體使用行為分析-以網路遊戲、網路購物與點選網路廣告為例, 世新2005媒體使用行為與評鑑研討會, 世新大學, 台北市, 台灣, 2005年12月.
  3. 李明昌, 蔡曉玲, 王孔政, 整合型決策樹於ABC存貨管理之研究, 2006年前瞻經營管理學術與實務研討會, 亞洲大學, 台中, 台灣, 2006年5月.
  4. Lee, M.C., Wee, H.M., A Vendor Managed Inventory Model with Deteriorating Items, 中國工業工程學會97年度年會暨學術研討會會議, 中原大學, 中壢, 台灣, 2008年12月.
  5. Yang Ming-Feng, Lee Ming-Chang, Chiang Hui-Ling, Using ANP in Food Quality Management of Bakery Sector, 2009資訊暨產業經營管理國際研討會, 育達商業科技大學, 苗栗縣, 台灣, 2009年6月.
  6. 藍天雄, 李明昌, 郭俞廷, 連鎖餐飲業導入雲端服務系統之結構模型研究, 2012年資訊管理及應用研討會, 育達商業科技大學, 苗栗縣, 台灣, 2012年6月.
  7. 林俊達, 李明昌, 馬美蘭, 黃聖槌, 運用結構方程式模型與層組分析法於供應商之選擇, , 2012年資訊管理及應用研討會, 育達商業科技大學, 苗栗縣, 台灣, 2012年6月.
  8. 李明昌, 喬治華, 彭鵬森, 新竹縣國小學生資訊素養學習成效與課程滿意度研究─以九年一貫97課綱資訊課程教材為例, 2015 創新感性設計學術研討會, 萬能科技大學, 桃園市, 台灣, 2015年4月.
  9. 李明昌, 喬治華, 林茂榮 , 高職教師資訊科技融入教學之影響因素, 2015 創新感性設計學術研討會, 萬能科技大學, 桃園市, 台灣, 2015年4月.
  10. 李明昌, 洪明欽, 蔡宜芳, 國民小學學童課外讀物閱讀態度與興趣研究-以苗栗縣國民小學四年級學童為例, 2015經營管理實務論壇暨研討會, 育達科技大學, 苗栗縣, 台灣, 2015年5月.
  11. 李明昌, 藍俊雄, 蕭才明, 應用層級分析法於戰鬥機模擬機性能提昇之設計研究, 2015年資訊與管理與觀光與休閒研討會, 育達科技大學, 苗栗縣, 台灣, 2015年5月.
  12. 李明昌, 洪明欽, 林經銘, 我國空軍技勤士官應具備關鍵能力之評析-以空軍某聯隊修護技勤士官為例, 2015年資訊與管理與觀光與休閒研討會, 育達科技大學, 苗栗縣, 台灣, 2015年5月.
  13. 李明昌, 陳美琇, 歐陽芳清, 戰鬥機飛行標準檢查作業與重要性評析-以本國某戰機為例, 2015年資訊與管理與觀光與休閒研討會, 育達科技大學, 苗栗縣, 台灣, 2015年5月.
  14. 李明昌, 林俊達, 余立宣, 資料探勘與資訊設備維修之研究, 2015年資訊與管理與觀光與休閒研討會, 育達科技大學, 苗栗縣, 台灣, 2015年5月.
  15. 藍天雄, 李明昌, 謝菁惠, 運用決策樹演算法分析金融機構查調呆帳身課稅資料, 2016年產學專利與資訊實務研究會, 育達科技大學, 苗栗縣, 台灣, 2016年5月.
  16. 李明昌, 鄭淳尹, 空軍軍職人員退役後從事後勤補給委外工作意願之研究, 2017創新管理與資訊實務研討會, 育達科技大學, 苗栗縣, 台灣, 2017年5月.
  17. 李明昌, 尤文杰 , 國民小學家長對學校臉書認知與家長滿意度之研究, 2017休閒事業發展學術研討會, 育達科技大學, 苗栗縣, 台灣, 2017年5月.

學位論文

  1. 李明昌, 整體精確性旋轉型中心組合設計, 中原大學機械工程研究所碩士論文, 1990年6月.
  2. 李明昌,賣方管理存貨與二階規劃策略之最佳補貨存貨模式, 中原大學工業與系統工程研究所博士論文, 2011年6月.

# end

2017年7月26日 星期三

函數原始碼 source code

R是開放原始碼軟體, 以下說明查詢函數的原始碼的方法(參考 1, 2).

簡介

R函數許多原始檔案包括 C, Fortran等程式碼, 常用呼叫其他已編譯完成程式的函數包括: .C .Call, .Fortran, .External, .Internal, .Primitive 等函數. (參考3  R Internals, 2017).

C程式在編譯成R時,可直接經由 primitives(原生) 或 .Internal interface (.內部介面)來呼叫使用, 此方式與 .External interface (.外部介面)類似, 但使用語法不相同.

「.Internal」 和 「.Primitive」 一般用於呼叫 C 的介面:
  • .Internal 是標準的用法,在呼叫C之前可以檢查R程式碼中的參數 .
  • .Primitive 執行效能較高,但不允許在函數中使用R程式.
R的原始碼 R-3.4.1.tar.gz (參考4) 解壓縮之後在 \R-3.4.1.tar\R-3.4.1\src\main 目錄中存放約121個 *.c 原始碼.



查詢函數原始碼

# 1
使用 pryr 套件的 ftype 函數可檢視該函數的種類:

  • regular/primitive/internal function
  • internal/S3/S4 generic
  • S3/S4/RC method

    library(pryr)
    ftype(apply) # "function"

    # 2
    直接輸入函數名稱, 即可顯示原始檔.

    apply



    # 3
    在 RStuido 軟體的程式編輯視窗, 選取 apply , 按 CTRL +  滑鼠左鍵, 可開啟原始檔.



    #4
    getAnywhere {utils} 可查詢函數隸屬於哪些套件與內容. 使用 show_c_source {pryr}可檢視該函數原始檔.




    #5
    使用 methods 函數與 getAnywhere 函數.


    R程式碼


    library(pryr)
    ftype(apply) # "function"
    apply
    
    lapply
    ftype(lapply) # "internal"
    getAnywhere(lapply)
    show_c_source(.Primitive(lapply(x)))
    
    princomp
    ftype(princomp) # "s3" "generic"
    methods(princomp)
    getAnywhere(princomp.default)
    # end

    參考資料

    [1] https://stackoverflow.com/questions/19226816/how-can-i-view-the-source-code-for-a-function

    [2] https://stackoverflow.com/questions/3485228/view-source-code-in-r

    [3] R Core Team, R Internals - Version 3.4.1 (2017-06-30), URL:  https://cran.r-project.org/doc/manuals/r-release/R-ints.pdf.

    [4] R 原始碼, https://cran.r-project.org/src/base/R-3/R-3.4.1.tar.gz

    2017年6月20日 星期二

    r ? <- $ () [] {} [[ @ :: 常用特殊運算子 (operators)

    本篇文章說明使用R時, 會有不同特殊運算子需求, 以下說明使用方式.

    ?問號

    ?符號功能是查詢線上說明, 例: ?plot, 其功能與 help(plot) 相同, 當然使用 ?'plot'?"plot"結果皆相同. 例: ?'+' 可查詢算數運算功能.


    <-運算子

    <-為指派運算子, 將右邊的運算結果指派至左邊物件, 強烈建議指派運算子不要使用等號(=), 以免與函數中的參數相混淆.

    > lotto <- sample(49,6)
    > lotto
    [1] 16  1 49 46 43  7

    $符號

    $符號用於取出物件內容,亦可用於串列資料的讀取.

    # 取出iris資料集的Species欄位資料, 其結果為向量
    iris$Species

    ()小括號

    ()符號大概是接觸R最常使用符號, 其使用時機為函數名稱

    readLines(system.file("DESCRIPTION")) , summary(iris), plot(iris), 如果在小括號前加上資料物件名稱, 此時會有錯誤產生.

    []中括號

    []中括號用於將資料進行條件篩選的指標(indexing), 例: 一維或二維資料物件取出部份符合條件資料.

    # Species為setosa的Sepal.Length資料
    iris$Sepal.Length[iris$Species == "setosa"]

    # 符合Sepal.Length大於5且Sepal.Width大於4的所有資料
    iris[iris$Sepal.Length >5 & iris$Sepal.Width > 4,]

    二維資料如matrix, data.frame 使用[列, 行] 方式取出資料或是取出直行欄位資料.
    # 讀取iris第1至4欄資料
    iris[1:4]

    {}大括號

    {}大括號用於標註套件名稱程式區塊.

    ?plot 會顯示 plot {graphics}表示 plot 函數隸屬於graphics套件.

    # 程式區塊
    > for (i in 1:10) {
    +   if (i %% 2 == 0) {
    +     print(paste0(i, "是偶數"))
    +   } else {
    +     print(paste0(i, "是奇數"))
    +   }
    + }
    [1] "1是奇數"
    [1] "2是偶數"
    [1] "3是奇數"
    [1] "4是偶數"
    [1] "5是奇數"
    [1] "6是偶數"
    [1] "7是奇數"
    [1] "8是偶數"
    [1] "9是奇數"
    [1] "10是偶數"

    [[ 二個左中括號

    如果資料物件有顯示此符號, 一般為串列(list).
    > list("RWEPA", c("R", "Python", "Julia"))
    [[1]]
    [1] "RWEPA"

    [[2]]
    [1] "R"      "Python" "Julia"

    > mylist <- list(web="RWEPA", programming=c("R", "Python", "Julia"))
    > mylist$programming
    [1] "R"      "Python" "Julia"
    > mylist[[2]]
    [1] "R"      "Python" "Julia"

    @運算子

    @符號用於取出S4物件內容(Slot). 目前已套件支援S4物件型態, 例: kernlab 套件. S4資料物件存取須使用@運算子. 
    參考: ?'@' 線上說明
    參考: http://adv-r.had.co.nz/S4.html


    ::運算子 (Double Colon)

    ::運算子一般用於指定套件的函數, 如果不同套件,確有相同函數名稱,此時使用
    套件名稱::函數名稱

    # 本例僅作為::的說明使用, 不加上::運算子亦可執行
    graphics::plot(as.ts(iris[-5]), main="")


    程式碼

    # ?問號
    ?plot
    help(plot)
    ?'plot'
    ?"plot"
    ?'+'
    
    # <-運算子
    # 隨機選取1~49的6個數值
    lotto <- sample(49,6)
    lotto
    
    # $符號
    # 取出iris資料集的Species欄位資料, 其結果為向量
    iris$Species
    
    # () 小括號
    readLines(system.file("DESCRIPTION"))
    summary(iris)
    plot(faithful)
    
    # []中括號
    # Species為setosa的Sepal.Length資料
    iris$Sepal.Length[iris$Species == "setosa"]
    
    # 符合Sepal.Length大於5且Sepal.Width大於4的所有資料
    iris[iris$Sepal.Length >5 & iris$Sepal.Width > 4,]
    
    # 讀取iris第1至4欄資料
    iris[1:4]
    
    # {}大括號
    # 套件名稱
    # plot {graphics}
    
    # 程式區塊
    for (i in 1:10) {
      if (i %% 2 == 0) {
        print(paste0(i, "是偶數"))
      } else {
        print(paste0(i, "是奇數"))
      }
    }
    
    # [[ 串列
    list("RWEPA", c("R", "Python", "Julia"))
    mylist <- list(web="RWEPA", programming=c("R", "Python", "Julia"))
    mylist$programming
    mylist[[2]]