เมื่อสักครู่ที่ GAME PAO YING CHUB จะเป็นการนำความรู้จากพื้นฐานโปรแกรมมิ่ง มาต่อ ยอดเป็นการเขียน Function การทำงานเพื่อให้คุ้นชินกับ R Language มาถึงตรงนี้จะเป็นการนำเอาพื้นฐานของทางด้าน Data Transformation ใน R Language มาเพื่อจำลองการวิเคราะห์และจัดการข้อมูลตาม Requirement ของ User ซึ่งในที่นี้เป็นตัวผู้เขียนที่จะลองยกตัวอย่างความต้องการต่างๆ จาก dataset จำลอง

สำหรับ dataset ที่เราจะใช้กันวันนี้คือ mtcars ที่เป็น dataset สำเร็จรูปใน Rstudio

ขั้นตอนแรกก่อนที่จะเริ่มทำงาน เราจะทำการ load library หรือ packages สำหรับการวิเคราะห์ข้อมูล ได้แก่ tidyverse และ dplyr

เริ่มต้นเราจะดูก่อนว่า dataset นี้ประกอบด้วยข้อมูล Column ชื่ออะไรบ้าง และความสัมพันธ์ของแต่ละ Column มีอะไรที่น่าสังเกต และเราสามารถเล่นกับก้อนข้อมูลนี้ได้อย่างไรบ้าง
จะเห็นได้ว่า Column ที่เป็นชื่อรถยนต์ ไม่ได้มีการระบุชื่อ Column ไว้ เราจะทำการสร้างชื่อ Column ให้กับ Column ชื่อรถยนต์นี้กัน

- เราทำการเรียก rownames(mtcars) เพื่อดูข้อมูลชื่อรถยนต์ในแถวแรกของ dataset นี้ทั้งหมด
- จากนั้นเรากำหนดให้ car_name คือตัวแปรของ rownames(mtcars)
- และทำการ Create Column ใหม่ใน dataset นี้ โดยการใช้คำสั่ง mtcars$model (“คำว่า model ไม่มีอยู่ใน dataset เริ่มต้น โปรแกรมจึงมองว่าเป็นการ create column ใหม่ที่ชื่อว่า mdel ขึ้นมาแทน)

เมื่อได้ column ใหม่แล้ว หากตรวจสอบจะพบว่าตอนนี้ใน dataset เราจะมีก้อนข้อมูลที่เป็น Column ชื่อรถยนต์ด้วยกัน 2 column ต่อไปเราจะทำการลบ Column ที่ไม่มีชื่อทิ้งไปก่อน โดยการระบุคำสั่ง rownames(mtcars) <- NULL เพื่อลบ rownames(mtcars) แถวที่เป็นชื่อรถยนต์ทิ้งไป

เมื่อลบข้อมูลเรียบร้อย จะเหลือเพียง 1 Column เท่านั้น
ในลำดับถัดไปเราจะทำการ วิเคราะห์ข้อมูลและจัดเรียงข้อมูลให้ตรงกับ Requirement กัน โดยวิธีการสร้าง data-pipeline เพื่อให้ง่ายต่อการเขียน Filter ต่างๆ
คำถามที่ 1 :: ต้องการข้อมูลชื่อรถยนต์ และจำนวนเกียร์ในตัวรถ จาก dataset นี้ ที่มีค่าน้ำหนักตัวรถตั้งแต่ 3.5 (wt) ขึ้นไป และ แรงม้ามากกว่า 180 (hp)

จากคำถาม เราจะเห็นว่า โจทย์ User อยากรู้ 2 อย่างได้แก่ ชื่อรถยนต์ (model) และ จำนวนเกียร์ (gear) ทีนี้เงื่อนไขเพิ่มเติม คือ User ต้องการให้เอาเฉพาะน้ำหนักตัวรถตั้งแต่ 3.5 (wt) ขึ้นไป และ แรงม้ามากกว่า 180 (hp) ขึ้นไปเท่านั้น ผมจึงทำการเพิ่ม column มาอีก 2 ค่าได้แก่ wt และ hp เพื่อให้ User ได้เห็นข้อมูลว่าตรงตาม Requirement แน่ชัด
และนี้คือข้อมูลที่ได้. . .

คำถามที่ 2 :: จงหาชื่อรถยนต์ , ประเภทเกียร์ (อัตโนมัติ , กระปุก) และ น้ำหนักตัวรถ จาก dataset นี้ โดยต้องการเฉพาะข้อมูลที่แรงม้ามากกว่า 200 ขึ้นไป และแรงม้าต่ำกว่า 100 เท่านั้น ไม่เอาระหว่าง 100 – 200 และจงระบุว่า คันไหนใช้เกียร์แบบไหน

จากโจทย์ User อยากได้ข้อมูล ชื่อรถยนต์ แและ ประเภทเกียร์ โดยมีเงื่อนไขเป็น แรงม้า ผมจึงทำการระบุ เงื่อนไขก่อน โดยการกำหนดว่าแรงม้าที่ User ต้องการ ต้องน้อยกว่า 100 หรือไม่ก็มากกว่า 200 ไปเลย จากนั้น จะดึงข้อมูลโดยเอาชื่อรถยนต์ จำนวนแรงม้า น้ำหนักตัวรถ และประเภทเกียร์มาแสดง
และนี้คือข้อมูลที่ได้. . .

จะเห็นได้ว่าข้อมูลพอดูได้ แต่ User อยากให้ระบุว่า คันไหนใช้เกียร์แบบไหน จึงทำการสร้างข้อมูลเพิ่ม โดยการใช้คำสั่ง function : mutate ร่วมกับ ifelse() เพื่อกำหนดเงื่อนไข หากเป็นจริง ให้แสดงข้อมูลนี้ และไม่เป็นจริงให้แสดงข้อมูลนี้

จากการที่เพิ่ม function : mutate ร่วมกับ ifelse() อธิบายตรงนี้ว่า ให้ am_gear คือการแสดงข้อมูลของ am ถ้า am เท่ากับ 0 ให้แสดงค่า “auto” แต่ถ้าไม่ ให้แสดงค่า “manual”
และทำการเรียงข้อมูลเพื่อให้สวยงามด้วย Function arrange
และนี้คือข้อมูลที่ได้. . .

. . . การจำลองการวิเคราะห์ข้อมูล และการ Transformation ใน R Language ก็จะเป็นประมาณนี้ หวังว่าจะมีประโยชน์ต่อผู้อ่านทุกท่านไม่มากก็น้อยนะครับ ขอบพระคุณครับ ♥
Leave a comment