ได้ยินภาษา R มานานพอสมควร ซึ่งในปัจจุบันได้รับความนิยมมากขึ้น
เพื่อนำมาประมวลผลข้อมูล (Big data) ในเชิงสถิติ
ดังนั้น ขอทำความรู้จักกับมันแบบผิวๆ กัน
เพื่อจะได้ไม่ตกยุคกัน มาเรียนรู้ภาษาใหม่ๆ กันหน่อยนะ
เริ่มด้วยภาษา R คืออะไร
R เป็นทั้งภาษาโปรแกรม
R เป็นทั้งส่วนประมวลผลเชิงสถิติ
R เป็นทั้งส่วนการแสดงผลในรูปแบบกราฟ
R ได้เตรียมวิธีการประมวลผลเชิงสถิติไว้มากมาย เช่น
- Linear และ Non-Linear modeling
- Classification
- Time-serie analysis
- Clustering
R สร้างอยู่บนพื้นฐานของภาษา S งงไปกันใหญ่
R เป็น Opensource และ Free
R มี community ที่ใหญ่พอสมควร ยิ่งในหมู่นักวิจัยนะ จะโตมากๆ
R ถูกออกแบบมา เพื่อให้ง่ายต่อการใช้งาน มีทั้งสัญลักษณ์ และ สูตรต่างๆ ทางคณิตศาสตร์มาให้
R คล้ายกับ SPSS, SAS และ Stata
R สามารถทำงานได้หลากหลายระบบปฏิบัติการ เช่น Linux, Mac และ Windows
R ประกอบด้วยชุดเครื่องมือการทำงานต่างๆ ต่อไปนี้
เพื่อทำให้ง่ายต่อการจัดการข้อมูล คำนวณ ประมวลผล และ แสดงผลข้อมูล
- การจัดการข้อมูล และ จัดเก็บข้อมูล ในรูปแบบต่างๆ
- มี operator สำหรับการคำนวณข้อมูลในรูปแบบของ array และ matric
- สามารถทำงานร่วมกับเครื่องมือวิเคราะห์ข้อมูลอื่นๆ ได้ง่าย
- ส่วนการแสดงข้อมูล เพื่อให้ง่ายต่อการวิเคราะห์
- สามารถพัฒนาด้วยภาษาโปรแกรมที่มีประสิทธิภาพ ทำให้มีความยึดหยุ่นสูง
- สามารถสร้างส่วนขยายด้วยการสร้าง package
- สามารถพัฒนาด้วยภาษา C ได้
ดังนั้น น่าจะพอทำให้เห็นว่า ทำไมควรใช้ R กันบ้างนะ
ทำไมคุณไม่ควรใช้ R
- ถ้าไม่มีความสามารถในการเขียนโปรแกรม
- เรื่องของเอกสารยังน้อย ถ้าเทียบกับภาษาอื่นๆ แต่ที่นี่ น่าจะพอช่วยแก้ไขปัญหานี้ได้ !!
ทำการติดตั้ง R กัน
ผมทำการติดตั้งบน Mac OS ซึ่ง Download จาก server ของประเทศไทย
อยู่ที่ มหาวิทยาลัยสงขลานครินทร์ ทำให้ Download ได้รวดเร็ว
หลังจากติดตตั้ง ผมเจอปัญหาแรกในการใช้งาน คือ ต้องกำหนด Locale ก่อนนะ
โดยใช้งานบน Mac OS จะพบเจอปัญหาดังนี้
tar: Failed to set default locale
ทำแก้ไขด้วยการกำหนด LANG และ LC_ALL ด้วย command ดังนี้
defaults write org.R-project.R force.LANG en_US.UTF-8
หลังจากนั้นทำการ restart R session แล้วทุกอย่างจะสามารถทำงานได้ปกติ
หน้าตา User Interface ของ R Console เป็นดังนี้
และถ้าอยากสะดวกสบาย ก็ติดตั้ง RStudio ด้วยนะครับ
แต่ผมยังไม่ใช้งานนะ
ตามธรรมเนียมต้อง Hello World R
แล้วเขียนอย่างไรดี เริ่มต้นง่ายๆ ด้วยการอ่านเอกสารสิ
ซึ่งประกอบด้วยเนื้อหาดังนี้
- Introduction to R
- R Data Import/Export
- R Installation and Administation
- Writing R Extension
- R Language Definition
- R Internal
- R Reference Index
อ่านยากหน่อย แต่จากที่ดูคร่าวๆ ถือว่าครบเลยครับ
มาเริ่มเขียน code กันนิดหน่อย
เขียน Hello World แบบโง่ๆ ดังนี้
> cat(‘Hello, world!\n’)
Hello, world!
เขียนให้อยู่ในรูปแบบของ function หน่อยสิ
>hello<- function() cat(‘Hello, world!\n’)
>hello()
Hello, world!
ลองมากำหนดค่าลงตัวแปรหน่อยสิ
> x <- 2
>x
[1] 2
ลองกำหนดค่าในรูปแบบ vector บ้าง
>y<-c(1,2,3,4,5)
>y
[1] 1 2 3 4 5
ในการเข้าถึงข้อมูลใน vector
>y[1]
[1] 1
>y[2]
[1] 2
ถ้าต้องการแสดงข้อมูลในรูปแบบของตารางแบบนี้ล่ะ ทำอย่างไร
สามารถเขียนได้ดังนี้
>elasticband <- data.frame(stretch=c(46,54,48,50,44,42,52), distance=c(148,182,173,166,109,141,166))
ทำการแก้ไขข้อมูลในรูปแบบตารางเหมือนโปรแกรม Spreadsheet ดังนี้
>elasticband <- edit(elasticband)
แสดงตารางดังรูป
และยังมีความสามารถอื่นๆ อีกมากมาย ลองไปดูเพิ่มเติมได้ครับ
อีกตัวอย่างคือ การจัดการข้อมูลจาก Twiter Search API
พบว่ามี package ชื่อว่า tweetR คือ Twitter client ช่วยทำให้ชีวิตเราง่ายขึ้นเยอะ
ก่อนอื่นทำการติดตั้ง ดังนี้
install.packages(c("devtools", "rjson", "bit64", "httr")) library(devtools) install_github("twitteR", username="geoffjentry") library(twitteR)
ทำการกำหนดค่าต่างๆ สำหรับใช้งาน Search API
api_key <- "your api key" api_secret <- "your api secret" access_token <- "your access token" access_token_secret <- "your access token secret" setup_twitter_oauth(api_key,api_secret,access_token,access_token_secret)
ทำการค้นหาข้อมูล Tweet ที่มีคำว่า elasticsearch
ใช้ข้อมูล 100 tweet ล่าสุดก็พอ
และทำการจัดกลุ่มว่า แต่ละ Tweet นั้นมาจาก device หรือ อุปกรณ์ใด ดังนี้
tweets = searchTwitter("elasticsearch", n=100) devices <- sapply(tweets, function(x) x$getStatusSource())
คำอธิบาย
getStatusSource() คือการดึงข้อมูล device หรือ client ที่ผู้ใช้ใช้ tweet นั่นเอง
โดยข้อมูลที่ได้จะอยู่ในรูปแบบนี้
<a>Twitter for iPhone</a>
ดังนั้น เราต้องทำการเอาส่วนที่ไม่ต้องการออกไปคือ <a> และ </a>
ด้วยการใช้ regular expression ซึ่งสามารถเขียน code ได้ดังนี้
devices <- gsub("<[a|A][^>]*>|</[a|A]>", "", devices)
โดยข้อมูลในตัวแปร devices จะมีรูปแบบดังนี้
แสดงข้อมูลในรูปแบบของ pie chart ดูหน่อยสิ
pie(table(devices))
ผลการทำงานเป็นดังนี้ ง่ายไหมล่ะ
สรุปแล้ว
ภาษา R เป็นภาษาโปรแกรมที่ผมไม่เคยเขียนมาก่อน
ดังนั้น อาจจะงงกับตัวภาษานิดหน่อย แต่ก็สามารถพอปรับได้ไม่ยาก
ด้วยการอ่านเอกสารการใช้งานที่มีมาให้
พบว่าการนำข้อมูลมาแสดงผลในรูปแบบกราฟทำได้ง่าย สะดวก
และมีคนพัฒนาพวก package ต่างๆ มาให้เยอะเลย
ยิ่งพวกการจัดการข้อมูลผ่าน API ของ Social Media นี่ครบมากๆ
แสดงว่า ขนาดของ community R ก็เยอะไม่เบาเช่นกัน
ดังนั้น ไม่มีเหตุผลอะไรเลย ที่ R จะไม่ได้รับความนิยม
และนี่คืออีกหนึ่งภาษาที่นักพัฒนาไม่ควรพลาด
ยิ่งคนที่สนใจเรื่องของการประะมวลข้อมูลเชิงสถิติ ก็พลาดไม่ได้ครับ
เดี๋ยวจะตกยุคก็เป็นได้ มาเขียน R กันนะ …