ช่วงนี้พอจะมีเวลาว่าง และเมื่อคืนเป็นคืนวันศุกร์ เหมาะที่สุดแล้ว ที่จะเขียนโค้ดภาษาที่ยังไม่เคยเขียน และมีแผนที่จะหัดเขียนภาษา R มาสักพักแล้วแต่ติดตรงงานด่วน หามรุ่ง หามค่ำ ย่ำรุ่ง ฟ้าสาง ฟ้าเหลือง แฮ่กๆๆๆ ไปราวๆสองเดือน ได้เวลาพัก เลยพักด้วยภาษา R
Photo by Sergey Zolkin / Unsplash
ผมเริ่มต้นที่ tryr.codeschool.com เพราะมีโจทย์ให้ลองทำตาม มีคำอธิบาย เข้าใจง่าย เขียนโค้ด กดรันผ่านแบบฝึกได้เลย โคตรดี
เล่าย้อนกลับไปนานหน่อย ผมรู้จักภาษา R เมื่อตอนราวๆปี 2553 - 2554 ประมาณนั้น ตอนนั้นเรียนอยู่ ในวิชา Engineering Statistic ซึ่งเป็นวิชาที่ผม Drop, ติด F และใช้เวลาเรียนใหม่มากที่สุด ก็ลงเรียนเกือบทุกๆเทอม มี 2 วิชาที่ผมเรียนเยอะสุด อันดับแรกก็วิชา Engineering Statistic และอันดับ 2 คือ Engineering Circuit Analysis อห เรียนเยอะขนาดไหนก็ ในปี 5 (ไม่จบ 4 ปีอยู่แล้วระดับผม) เทอมสุดท้าย ผมลงเรียน 4 วิชา คิดว่า จบแน่นอล ผลคือ ผ่าน 2 วิชา และติด F 2 วิชา คือ ไอ้ 2 ตัวนี่แหละที่ติด F วิชา Circuit ลงเรียนตอน Summer ได้ แต่ Stats ลงไม่ได้ ต้องรอเปิดเทอม...
เข้าเรื่อง ตัว Try R มีทั้งหมด 7 บท ผมเริ่มเปิดหน้าเว็บนี้ตอน 2 ทุ่มครึ่ง และนั่งทำตามแบบฝึกไปเรื่อยๆ ทำไป เล่น Facebook ดื่มของขม ชมนมเด็กสาว แต่ทั้งหมด ก็จบลงได้ในราวๆ 5 ชั่วโมง ทำให้เข้าใจชนิดของข้อมูล การปริ้นค่าออกมาทางหน้าจอ การกำหนดค่าตัวแปร การวาดกราฟ การอ่านไฟล์ การใช้ help
การเรียกฟังก์ชั่นที่มีให้ การเล่นกับชนิดข้อมูล vector, matix, data frame
ใน R มีข้อมูลตัวอย่างชื่อ volcano
ให้เอามาลองวาดรูปดูได้ ผมลองทำตามแล้วว้าวเลย ชอบมากๆ
persp(volcano, expand = 0.5)
ผลที่ได้คือรูปนี้
หรือจะวาดเป็น Heatmap ก็ได้ ด้วยฟังก์ชั่น image
image(volcano)
จะได้รูปนี้
หลังจากเจอรูป เจอกราฟไปแล้ว และพวกฟังก์ชั่นเกี่ยวกับทางสถิติผมยิ่งว้าว เกือบจะหยุดทำแบบฝึก แล้วไปเอาข้อมูลจริงที่มีอยู่ มาทำการวาดกราฟเลย สติแตกไปพักหนึ่ง แล้วก็เริ่มมาทำแบบฝึกให้จบก่อน 55555 คิดดูแล้ว ทำไมกูไม่เริ่มเขียน R ตั้งแต่ 5 ปีที่แล้วว่ะ แล้วก็นั่งทำแบบฝึกต่อ
แต่ด้วยความที่เคยใช้ Jupyter อย่างที่เขียนเล่าไปก่อนหน้านี้คือ ใช้ Jupyter ทำ REST API แบบง่าย และได้เห็นมาว่า ตัว Jupyter มันมี R ให้ใช้ ก็เลยลองรัน Jupyter R Notebook มาลองเล่น วิธีก็ง่ายๆ ใช้ Docker เหมือนเดิม ใช้ image นี้ jupyter/r-notebook
docker run -d --name r.notebook -p 8888:8888 jupyter/r-notebook
กดรันไปแล้ว รอนานมาก เพราะ Image มันใหญ่ ก่อนรันลืมดู ได้แต่นั่งรอ...
พอรันเสร็จแล้ว ก็ได้หน้าตา แบบ Jupyter แบบบล็อกก่อนหน้าเลย แต่เป็น R Kernel เขียนภาษา R แทน Python ผมเลยติดตั้ง Package ชื่อ mongolite
แต่ติดตั้งไม่ผ่าน เพราะไม่มี openssl ติดตั้งอยู่ พอจะติดตั้งเพิ่ม ก็ติดปัญหาเรื่องสิทธิ์ root ที่ไม่ได้ใส่ให้มันตอนรัน ขี้เกียจ... ก็เลยเอาไฟล์ csv ไปอ่านเอาแทน ง่ายมาก แบบนี้
print('Reading file...')
contracts <- read.table('xx.csv', sep='|', header = TRUE)
print('done')
ใช้ read.table
เพราะว่าไฟล์ csv ที่ export มันมีปัญหากับคนที่เอาไปใช้ต่อก่อนหน้านั้นคือ เอาเข้า MS Access แล้วบอกว่าใช้ comma separate แล้วเพี้ยน.. ขอเป็น |
แทนน่ะ ได้! จัดไป
พออ่านไฟล์เสร็จแล้ว ก็วาดกราฟเลยครับ
print('ploting graph...')
principal_in_contract = contracts$principal_in_contract
p_mean = mean(principal_in_contract)
p_sd = sd(principal_in_contract)
plot(principal_in_contract, xlab = "Pricipal in contracts", ylab = 'THB', las = 1)
abline(h = p_mean)
abline(h = p_mean + p_sd)
print('done')
รูปที่ได้คืออันนี้ แจ่มเลย
ไม่รู้จะเล่าอะไรต่อ เล่นไปแค่นี้ จบแล้ว 5555555
In []: