ได้ยินภาษา 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 กันบ้างนะ

Untitled-1

ทำไมคุณไม่ควรใช้ 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 เป็นดังนี้

Screen Shot 2557-10-27 at 11.16.23 PM

และถ้าอยากสะดวกสบาย ก็ติดตั้ง 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

ถ้าต้องการแสดงข้อมูลในรูปแบบของตารางแบบนี้ล่ะ ทำอย่างไร

Screen Shot 2557-10-28 at 12.48.48 AM

สามารถเขียนได้ดังนี้

>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)

แสดงตารางดังรูป

Screen Shot 2557-10-28 at 12.52.15 AM

และยังมีความสามารถอื่นๆ อีกมากมาย ลองไปดูเพิ่มเติมได้ครับ

อีกตัวอย่างคือ การจัดการข้อมูลจาก 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))

ผลการทำงานเป็นดังนี้ ง่ายไหมล่ะ

Screen Shot 2557-10-28 at 12.14.08 AM

สรุปแล้ว

ภาษา R เป็นภาษาโปรแกรมที่ผมไม่เคยเขียนมาก่อน
ดังนั้น อาจจะงงกับตัวภาษานิดหน่อย แต่ก็สามารถพอปรับได้ไม่ยาก
ด้วยการอ่านเอกสารการใช้งานที่มีมาให้

พบว่าการนำข้อมูลมาแสดงผลในรูปแบบกราฟทำได้ง่าย สะดวก
และมีคนพัฒนาพวก package ต่างๆ มาให้เยอะเลย
ยิ่งพวกการจัดการข้อมูลผ่าน API ของ Social Media นี่ครบมากๆ
แสดงว่า ขนาดของ community R ก็เยอะไม่เบาเช่นกัน

ดังนั้น ไม่มีเหตุผลอะไรเลย ที่ R จะไม่ได้รับความนิยม
และนี่คืออีกหนึ่งภาษาที่นักพัฒนาไม่ควรพลาด
ยิ่งคนที่สนใจเรื่องของการประะมวลข้อมูลเชิงสถิติ ก็พลาดไม่ได้ครับ
เดี๋ยวจะตกยุคก็เป็นได้   มาเขียน R กันนะ …

Reference Websites และ Resource ที่น่าสนใจ