วันนี้มาเรียนพื้นฐานของภาษา R ชื่อ course ว่า R programming for (young) Data Scientist
เป็นหนึ่งใน course ที่อยู่ในงาน Predictive Analytic and Data Science conference
ถือได้ว่า เป็นการเรียนรู้ภาษาใหม่ ๆ อีกครั้งหนึ่ง
โดยเนื้อหาต่าง ๆ ใน course นี้จะเป็นฉบับพื้นฐาน
แต่ก็ทำให้รู้ และ เข้าใจว่าต้องศึกษาเพิ่มเติมและนำไปใช้อย่างไรบ้าง
เครื่องมือที่ใช้งานประกอบไปด้วย
- R language สามารถ download ได้จาก CRAN repository
- R Studio เป็น IDE สำหรับเขียนโปรแกรมด้วยภาษา R
พื้นฐานมันสำคัญมาก ๆ
เริ่มจากการประกาศตัวแปร การ assign ค่าลงในตัวแปร ซึ่งสามารถทำได้ 2 แบบคือ [code] a = 2 2 -> a [/code] ถ้าต้องการให้แสดงผลลัพธ์จากการทำงานตลอด โดยไม่ต้อง print ค่าออกมาดูเอง ให้ทำการเขียนดังนี้ [code] (a = 2) (2 -> a) [/code]จากนั้นทำการกำหนด Working directory
ซึ่งทำได้หลายแบบ แต่ถ้าไม่อยากผูกติดกับเครื่องมือ ก็ใช้คำสั่ง [code] getwd() setwd('<your working directory>') [/code] ผู้สอนแนะนำให้ศึกษาแต่ละคำสั่งหรือ function จาก help() ซึ่งมันมีความสำคัญอย่างมาก และ มันอยู่ใกล้เรามาก ๆ เช่น ถ้าต้องการอยากรู้ว่า setwd คืออะไร และ ใช้งานอย่างไร ? สามารถพิมพ์ว่า help(setwd) เพื่อดูรายละเอียดได้เลย เป็นสิ่งที่นักพัฒนาต้องไม่พลาด !!ต่อมาแนะนำให้ลองดู demo project หรือ code ที่มากับ R
ซึ่งมีประโยชน์อย่างมากต่อผู้เริ่มต้นศึกษา เพราะว่า ตัวอย่างมีทั้ง code และแสดงผลการทำงานให้เห็นเลย สามารถดู demo ด้วยคำสั่ง [code] demo() #ดูว่ามี demo เรื่องอะไรบ้าง demo(graphics) #ดู demo ของ package graphics [/code] ผลการทำงานจาก demoจากนั้นเข้าเรื่องของ Data type หรือชนิดของข้อมูล
ประกอบไปด้วย- Scala
- Vector
- Matrix
- Data frame
- List
- Mean
- Max
- Min
- Average
- Sum
- Exp
- Log
- Sqrt
ยกตัวอย่างการใช้งาน Vector
เริ่มจากการสร้าง Vector [code] vector1 = c(1, 2, 3 ,4 ,5) vector2 = c(1:5) vector3 = seq(from=1, to=5, by=1) random_vector = rnorm(5) empty_vector = c() [/code] สิ่งที่น่าสนใจคือ c มันคืออะไร ? แนะนำให้ใช้ help(c) จะพบว่า c มันคือ Combine values into Vector or List พร้อมยกตัวอย่างการใช้งาน เห็นไหมว่า help มันช่วยเหลือเราได้มากเลยนะยกตัวอย่างการใช้งาน Matrix
เป็นชนิดข้อข้อมูลอีกแบบที่ถูกใช้งานเยอะ เราสามารถสร้างได้ดังนี้ [code] vector1 = c(1, 2, 3 ,4 ,5, 6) matrix1 = matrix( vector1, nrow=3 ) #กำหนดให้มี 3 row matrix2 = matrix( vector1, ncol=2 ) #กำหนดให้มี 2 column [/code] สามารถนำ matrix มาบวก ลบ คูณหารกันได้ รวมไปถึงการหา invert matrix และ Diagonal matrix ได้แบบสบาย ๆ ถึงตรงนี้ต้องไปเปิดตำราเรียนกันใหม่เลยทีเดียว !!แต่สิ่งที่มีประโยชน์ และ ใช้งานมาก ๆ คือ Data frame
มันคือข้อมูลที่เราสามารถกำหนดชื่อ column ของข้อมูลได้ และเราสามารถดึงข้อมูลมาใช้งานง่าย ๆ มาก ทำการสร้าง Data frame โดยสร้างจาก vector นั่นเอง ดังนี้ ทำการสร้างข้อมูล 3 column ขึ้นมา คือ a, b, c [code] x = c(1,2,3) y = c(10,20, 30) z = c(100,200,300) t = data.frame(a=x, b=y, c=z) [/code] จากนั้นถ้าต้องการดึงข้อมูลในแต่ละ column มาใช้งาน สามารถทำได้ดังนี้ [code] t$a t[['a']] t[, 'a' ] t[, c('b', 'a')] #ดึงหลาย ๆ column [/code]มาทำ workshop เรื่อง Data frame กันนิดหน่อย
โดยให้ทำการ random ข้อมูลขึ้นมา 3 ชุด จากนั้นทำการสร้าง Data frame และ แสดงผลในรูปแบบ graph ด้วย plot สามารถเขียน code ได้ดังนี้ [code] x1 = rnorm(100) x2 = rnorm(100) x3 = rnorm(100) t3 = data.frame(a=x1, b=x1+x2, c=x1+x2+x3) t3 plot(t3) [/code] แสดงผลการทำงานดังนี้จากนั้นก็ทำการเรียนเกี่ยวกับเรื่องการวาด graph เพิ่มเติม
เช่น- plot
- line
- points
มาถึง Package ที่แจ่มมาก ๆ คือ dplyr
ใช้สำหรับการจัดการข้อมูล ก่อนนำไปวิเคราะห์ต่อไปนั่นเอง ซึ่งเราต้องติดตั้งเพิ่มเติม ด้วยคำสั่ง [code] install.packages("dplyr") [/code] ส่วนการใช้งานขั้นพื้นฐานก็มีหลายอย่างเช่น- การแสดงข้อมูลในรูปแบบต่าง ๆ เช่นแบบตารางใน console หรือ ใน R Studio
- การกรองข้อมูล ซึ่งในส่วนนี้สนุกมาก ๆ นำเอาหลักการของ data pipeline มาใช้
- การลบข้อมูลที่ซ้ำซ้อนออกไป
- การดึงเฉพาะข้อมูลที่ต้องการมาใช้งาน หรือ การ slice data
- ถ้าต้องการดูเพิ่มเติมไปที่ help ได้เลย
มาดูตัวอย่างจากการทำ workshop แบบ step-by-step
โดยใช้ข้อมูลตัวอย่างชื่อว่า iris flower dataset ถ้าลอง plot ออกมาเป็นดังนี้ หรือแสดงข้อมูลในรูปแบบอื่น ๆ ได้เช่น [code] install.packages("dplyr") (table_iris = tbl_df(iris)) #Table in console View(iris) #Table in R Studio glimpse(iris) [/code]จากนั้นมาดูเรื่องของการ Filter ข้อมูลแบบใช้ Data pipeline เข้ามาช่วยเหลือ
สิ่งที่ต้องการคือ- ทำการกรองข้อมูล iris ที่มีค่าของ column Sepal.Length > 7 ขึ้นไป
- เลือกเอาเฉพาะ column Sepal.Length, Sepal.Width และ Species เท่านั้น
- dplyr สำหรับจัดการข้อมูล ซึ่งมันมีวิธีการอีกเยอะมาก ๆ
- Forecast สำหรับการทำนายผลจากข้อมูล
- ggplot2 สำหรับการแสดงผลในรูปแบบ graphic