ถ้ามองย้อนกลับไปสัก 3 เดือนก่อน เราคงไม่เห็นภาพตัวเองมานั่งพิมพ์โค้ด
แต่ตอนนี้คือเรากำลังจะเรียนภาษาที่ 2 ที่ใช้ในแวดวงโปรแกรมมิ่งแล้ว แม้ว่าภาษาแรกอย่าง python จะยังไม่ได้เอาไปใช้ทำอะไรเป็นเรื่องเป็นราวก็ตาม แต่ก็อยากเรียนเพิ่มอ้ะ อยากรู้ว่าจะเป็นยังไง
หลังจากที่ครั้งก่อนได้เรียน python ไป วันนี้เราก็มาลองของใหม่กันบ้าง นั่นก็คือภาษา R ที่จะเน้นใช้ในการวิเคราะห์ข้อมูล โดยคอร์สนี้คือคอร์ส R from Zero สอนโดยเจ้าเก่าอย่างเพื่อนเรา แอดมินเพจ Data Content น่ะเอง
สำหรับวันนี้เราขอมารีวิวคอร์สเรียนในแบบฉบับมือสมัครเล่นเรื่องการเขียนโค้ดอีกครั้ง ไม่ขอลงรายละเอียดเนื้อหาลึกนะฮะ อยากรู้ต้องไปเรียนเอง ^_^ บล็อกนี้ขอนำประสบการณ์การเรียนภาษาโปรแกรมมิ่งตามแบบฉบับคนที่ไม่ได้ทำงานด้านนี้มาฝากกัน หากผิดพลาดประการใดสามารถทักมาบอกได้จ้า
เราขอไล่หัวข้อไปตามที่ทางเพจให้ข้อมูลไว้เลยละกันเพื่อความง่ายต่อการอธิบาย โดยที่เรียนในวันนี้จะมี 3 ส่วนหลักๆ กับอีก 1 ส่วนพิเศษ สอนยาวกันตั้งแต่ 9 โมงยัน 5 โมงเลยทีเดียว ขอคารวะความอึดของแอดมินอีกครั้งนะ
Part 1: INTRODUCTION
1.1 รู้จัก R และ RStudio กันก่อน
สำหรับภาษา R นี่ทางแอดมินบอกเลยว่าคอร์สนี้จะเน้นเรื่องการคำนวณและสถิติมากสักหน่อย เพราะ R มันถูกออกแบบมาเพื่อประการนี้แหละ ซึ่งเมื่อเทียบกับ python แล้ว R นี่คำนวณได้เจ๋งกว่าเยอะ ไม่ต้อง import library เสริมมากมาย เพราะโปรแกรมมันเกิดมาเพื่อคำนวณอยู่แล้ว ฟังก์ชั่นคำนวณจึงมีพร้อม พิมพ์สั่งคำสั่งกันได้เลย
สำหรับ R นั้นมันจะมี 2 โปรแกรมที่เกี่ยวข้องกัน คือ R เฉยๆ กับ RStudio ซึ่งสิ่งที่ tricky คือแม้เราจะบอกว่าเรากำลังจะเขียน R แต่โปรแกรมที่เราใช้ไม่ใช่ R เว้ย มันคือ RStudio ต่างหาก
ซึ่งความแมวอยู่ตรงนี้… R ทำงานโดยปราศจาก RStudio ได้ แต่ RStudio อยู่ไม่ได้ถ้าไม่มี R
เอ๊า ทำไมต้องมี 2 อันมาให้งงเล่น
ต้องเข้าใจก่อนว่า R นั้นคือโปรแกรมหลัก ซึ่งก่อนหน้านี้นักพัฒนาก็คงต้องพิมพ์โค้ดผ่านโปรแกรมนี้แหละ แต่ไปๆ มาๆ ก็รู้สึกว่ามันใช้งานยาก เลยออกแบบ RStudio ขึ้นมาช่วยในการทำงาน ซึ่งตัว RStudio เนี่ยจะช่วยในแง่ของการสื่อสารและแสดงออก ให้มนุษย์เราเข้าใจกันง่ายๆ แต่หลังบ้านอย่างการคำนวณ การรันคำสั่งต่างๆ คือความรับผิดชอบของ R.. นั่นคือเหตุผลว่าทำไม R ถึงเป็น a must เพราะมันไปพ่วงอยู่ใน RStudio ด้วยน่ะเอง โดยเราต้องโหลดโปรแกรม R มาก่อนถึงจะโหลด RStudio มาใช้ได้
แค่เปิดหน้าจอของทั้ง 2 โปรแกรมเทียบกันก็จะพอรู้ว่าทำไมเราควรย้ายตัวเองไปอยู่ใน RStudio .. RStudio จะมีการแทร็กให้ด้วยว่าตัวแปรที่เรากำลังใช้งานอยู่คืออะไร มีช่องพิมพ์โค้ด (Script) ช่องแสดงผล (Console) ช่องบอกค่า (Environment) และช่องจิปาถะ (ไม่รู้จะแปลสั้นๆ ยังไงง่ะ) หรือ Graphical Output ซึ่งเป็นช่องที่หากเราสร้างกราฟ กราฟก็จะถูกแสดงได้นี้ นอกจากนี้มันก็ยังมีไว้ใช้อวดว่ามีฟังก์ชั่นอะไรให้เล่นบ้าง

ฟังๆ ดูแล้วก็ตลกดี ที่การใช้งานส่วนใหญ่อยู่บน RStudio ที่เป็นตัวเสริม ไม่ใช่ R ซึ่งเป็นโปรแกรมหลัก
1.2 Hello World
ขออวดนิดนึงว่ารอบนี้เตรียมตัวมาพร้อม เราติดตั้งโปรแกรมสำเร็จตั้งแต่ก่อนมาเรียนแล้ว เลยไม่ต้องติดตั้งในห้องเรียน ซึ่งการติดตั้งก็ไม่ยากอะไร สามารถเสิร์ชกูเกิ้ลเข้าเว็บที่ให้ดาวน์โหลด แล้วดาวน์โหลดแบบปกติกันได้เลย (ของเราเป็น mac อะ ไม่มีอะไรต้องทำเป็นพิเศษนะ)
เมื่อโปรแกรมพร้อมแล้ว เราก็เปิด RStudio เพื่อเริ่มคำสั่งแรกในโหมด Script กันเลย นั่นก็คือคำสั่งทักทายชาวโลก “Hello World” พิมพ์เหมือนใน Python เลย


1.3 Object ต่างๆ เช่น Number, String, Vector, Matrix, List, Dataframe และตัวแปร
โอ้ ช่างมากมายเหลือเกิน ขอบอกว่าวันนี้แอดมินจัดตัวอย่างมาให้แน่นสุดๆ เราเริ่มจากการตั้งตัวแปรกันก่อน ซึ่งภาษา R เราจะใช้ลูกศร <- ในการกำหนดตัวแปรนะฮะ ในขณะที่ python จะใช้เป็น =



นอกจากนี้ ความดีงามของ Rstudio คือเราสามารถเขียนโค้ดให้เสร็จทีเดียวแล้วสั่งให้มัน run ทีละบรรทัดได้ ไม่เหมือน python ที่ถ้าเขียนโค้ดเสร็จแล้ว มันก็จะรันทั้งดุ้นนั่นแหละ การ run ทีละบรรทัดนั้นเหมาะสำหรับมือใหม่ เพราะจะได้เห็นชัดๆ ว่าโค้ดแต่ละบรรทัดนั้นแสดงผลออกมาเป็นยังไง
ดูเหมือนจะดี…แต่การที่โปรแกรมเป็นแบบนี้ก็มีจุดที่เราต้องระวังเหมือนกัน เพราะเราจะต้อง run โค้ดกำหนดตัวแปรก่อนเรียกตัวแปรทุกครั้ง ไม่งั้นไม่เรียกไม่ออกเพราะมันไม่รู้ว่าตัวแปรมีค่าเป็นอะไร ตรงนี้ต้องอย่าลืม หรือถ้าจะให้ชัวร์ก็กด source เพื่อรันตัวแปรออกมาให้หมด ไม่ก็ไฮไลต์ครอบโค้ดทั้งหมดแล้วกด run ทีเดียวก็ได้ ถ้าแม่นแล้ว


ต่อไปก็เป็นการคำนวณทั่วไป อันนี้แอดมินยกตัวอย่างมานิดเดียวพอให้เห็นภาพ ใช้สัญลักษณ์เบสิกที่เราคุ้นเคยกันดี ไม่มีอะไรมาก
Part 2: CALCULATIONS + DATA ANALYSIS
2.1 สถิติพื้นฐาน เช่น mean median S.D. variance และ z-score
มาหัวข้อนี้ รู้สึกเหมือนกลับไปเรียนมหา’ลัยกันเลยทีเดียว สำหรับการคำนวณทางสถิตินั้นทำได้ง่ายๆ ผ่าน R เลย โค้ดมันตรงตัวมาก ไม่ว่าจะเป็น mean median SD variance เชื่อแล้วว่าสร้างมาเพื่อการนี้จริงๆ

สำหรับการคำนวณ z-score ก็จะซับซ้อนขึ้นอีกนิดนึง เพราะ z-score คือส่วนผสมของ mean และ SD อีกที ก็ต้องนำไปใส่เป็นตัวแปรแล้วคำนวณกันไป

2.2 Vector
จากนั้นก็จะเริ่มเข้าสู่ความเข้มข้น นั่นก็คือการเรียก vector ซึ่งสิ่งนี้แอดมินบอกว่าถือเป็นแก่นหลักของ R เลยก็ว่าได้ เพราะอะไรหลายๆ อย่างต่อจากนี้จะต่อยอดจาก vector ด้วยกันทั้งสิ้น ซึ่ง vector ก็คือเซ็ตข้อข้อมูลหลายๆ ชิ้นนำมามัดรวมกัน อารมณ์คล้ายๆ list ใน python นั่นละ


ความดีงามของ vector ใน R คือ สมมติว่าเราอยากจะเรียกไอเท็มใดไอเท็มหนึ่งออกมา เราสามารถเรียกตามลำดับมันได้เลย ไม่ปวดหัวเหมือน list ใน python ที่ว่าหากเรียกจากด้านซ้ายต้องเริ่มที่ 0 จากด้านขวาเริ่มที่ -1 ไรงี้ มึนมาก

อ้อ ลูกเล่นอีกอย่างหนึ่งของการทำ vector คือการสร้าง sequence ลองคิดภาพดูว่าหากเราต้องการข้อมูลตัวเลข 1 ถึง 1000 ถ้าต้องให้นั่งพิมพ์มือนี่แย่แน่ คำสั่ง seq() จะมาช่วยชีวิตเรา ง่ายๆ เพียงแค่ใส่ว่าอยากให้ตัวเลขเริ่มที่เท่าไร จบที่เท่าไร และเพิ่มขึ้นทีละเท่าไร

นอกจากนี้ก็ยังสามารถเติม item เข้าไปในตัว vector ได้ด้วยคำสั่ง append ซึ่ง R มันมีข้อดีตรงที่เราสามารถเลือกดู vector ที่เราต้องการได้เลย เพียงแค่กด run vector นั้นใหม่ อยากใช้แบบไหนก็ run อันนั้นเลย

คำสั่งเพิ่มเติมที่สามารถใส่ได้คือ length() เพื่อหาว่า item ใน vector นั้นมีกี่ชิ้น, rep() หรือการกำหนดให้ item ใน vector สร้างจำนวนซ้ำๆ กัน

2.3 Function
เราสามารถสร้าง Function ไว้ใช้ในการคำนวณเองด้วยนะ อย่างในตัวอย่างนี้แอดมินใช้เป็นการคำนวณความยาวของสามเหลี่ยมมุมฉาก ด้านที่ยาวที่สุด (hypothenuse) ซึ่งก็คือผลบวกกันของผลยกกำลังของความยาวอีก 2 ด้านมาบวกรวมกัน

2.4 Matrix
ว่าแล้วก็มาทำ matrix กัน ซึ่งนี่ก็ต่อยอดมาจากคำสั่งเก่าๆ เช่น vector, seq นั่นเอง เราสามารถคำนวณ matrix 2 อันได้ มีกรณีพิเศษคือถ้าคูณกัน ต้องใส่คำสั่งเพิ่มเติมนิดหน่อย ไม่งั้นมันจะจับคูณตรงๆ ไม่ได้คูณไขว้ไปมาเหมือนที่ควรจะเป็น



ถ้า dimension ของ matrix เท่ากัน ก็จับมาบวกลบได้


2.5 List และ Dataframe สร้างฐานข้อมูล
จากคลาส python ครั้งก่อน เราได้เห็นความ creative ในการสร้างโจทย์ของแอดมินไปแล้ว คราวนี้แอดมินก็ยังไม่ทิ้งคอนเซ็ปต์การสร้างโจทย์ที่ทุกคนสามารถเข้าใจได้ง่ายๆ ด้วยการใช้ตัวอย่างเป็นสมาชิกของ BNK48, The Avengers และ Star Wars ซึ่งฐานข้อมูลก็จะสามารถสร้างได้ 2 แบบคือเป็น list กับ dataframe โดยอย่างหลังนี่แอดมินบอกว่าเป็นลักษณะข้อมูลยอดนิยมของการวิเคราะห์ข้อมูลเลย การเรียกข้อมูลแบบ dataframe ยังดูง่ายกว่าแบบ list อีกด้วย





2.6 ลองเล่นกับข้อมูลจริงบ้าง ด้วยข้อมูลเซ็ต airquality
ใน RStudio นี่ก็มีเซ็ตข้อมูลจริงให้เราฝึกเล่นนะ ตัวอย่างที่แอดมินยกมาเล่นรัวๆ วันนี้คือ airquality หรือฐานข้อมูลของคุณภาพอากาศในนิวยอร์ก ซึ่งข้อมูลเซ็ตนี้มี sample ที่ค่อนข้างเยอะเลยทีเดียว พอ run ออกมาทีก็จะยาวเป็นหางว่าว แอดมินเลยเสนอทริกในการเลือกดูแค่แถวแรกๆ หรือแถวท้ายๆ เพื่อไม่ให้ข้อมูลล้นเกินไป ด้วยการใช้คำสั่ง head & tail


ด้วยความที่เป็นข้อมูลจริง จึงเป็น error ในรูปแบบของ NA หลายจุด นี่คือปัญหา เพราะเราจะไม่สามารถคำนวณข้อมูลเหล่านี้ได้เลย ดังนั้นจึงต้องทำการ clean ข้อมูล งานนี้ต้องติดตั้งฟังก์ชั่น tidyverse มาช่วยกันหน่อย ซึ่งวิธีติดตั้งก็แค่เลื่อนเม้าส์ไปตรงปุ่ม package ในกล่องขวาล่าง แล้วพิมพ์ชื่อฟังก์ชั่น กด install ทีนี้หน้าจอซ้ายล่างก็จะรันรัวๆ เลย ค่อนข้างยาวนิดนึง รอกันไป เมื่อเสร็จเรียบร้อยเราก็จะสามารถสั่งให้โปรแกรมลบ NA ออกไปได้ จะได้คำนวณกันได้


Part 3: DATA VISUALIZATION
3.1 Plot Graph
ถ้าจะให้ตอบว่านอกจากการคำนวณแล้ว มีอะไรที่ R ง่ายกว่า Python บ้าง? ก็เห็นจะเป็นการพล็อตกราฟนี่แหละ ที่พิมพ์เสร็จครบจบในที่เดียว ไม่เหมือนใน python ที่ต้องติดตั้ง library เสริมไปเรื่อย ตัวอย่างที่ยกกันมาในวันนี้ก็อย่างเช่นการสร้าง linear model ซึ่งสามารถกดดู summary เพื่อดูข้อมูลทางสถิติสำคัญๆ ได้ด้วย

การพล็อตกราฟก็ทำได้หลากหลาย ไม่ว่าจะเป็น line graph, histogram, scatter plot, box plot และ scatter plot matrix ที่ดูครั้งแรกแล้วงงมากว่ามันคืออะไร แต่พอเข้าใจแล้วนี่กระจ่างเลย มันสุดยอดดด อ้อ แล้วเราสามารถปรับเปลี่ยนรูปลักษณ์การแสดงผลของกราฟแบบ scatter plot ได้ด้วย อยากเปลี่ยนเป็นรูปสามเหลี่ยม ดาว สี่เหลี่ยม วงกลม ได้หมดตามใจชอบ มีกราฟหลากหลายหน้าตาให้เลือกเล่นด้วย อันข้างล่างนี้ส่วนใหญ่จะมาจากข้อมูลเซ็ต airquality ที่เล่นกันไปเมื่อครู่










Part 4: Extra Workshop: Clustering
สิ่งนี้เราขอเอารูปมาอวดอย่างเดียว เพราะเราไม่รู้เรื่องว่ามันคืออะไร 555 ซึ่งจุดประสงค์ของการทำโจทย์นี้นั้นแอดมินก็ไม่ได้กะให้ทุกคนเข้าใจ แต่ต้องการให้ทุกคนตระหนักว่าถึงมีโค้ดไป ถ้าไม่เข้าใจจริงๆ ก็จะไม่รู้เรื่องอยู่ดี ดูอย่างอันนี้ เราใช้ข้อมูลเซ็ตจริง เป็นข้อมูลเกี่ยวกับดอกไม้ ข้อมูลมาแนวชีววิทยามาก พิมพ์โค้ดแล้วจะแสดงผลออกมาได้แบบนี้ ซึ่งดูโปรฯ มาก แต่ถามว่าเข้าใจมั้ย ไม่เข้าใจ (ฮา) อันนี้ก็คือแสดงให้เห็นเฉยๆ ว่ามันสามารถทำอะไรอลังการแบบนี้ได้นะ

จบกันไปแล้วกับคอร์ส R from Zero โดยแอดมินเพจ Data Content ถือเป็นอีกวันที่เนื้อหาเข้มข้นมาก โดยส่วนตัวเราว่าเข้มข้นกว่า Python เยอะเลย อาจจะเพราะมีการคำนวณค่อนข้างเยอะด้วยละมั้ง แต่พอมาเรียนอย่างนี้ก็ทำให้เราเข้าใจว่าความแตกต่างระหว่าง python และ R คืออะไร ทำไมถึงควรใช้เป็นทั้ง 2 อัน? ก็เพราะทั้ง 2 อันมีจุดแข็งต่างกันไป ฝั่ง python จะทำโจทย์แนว logic ได้สวยกว่า ง่ายกว่า ส่วน R จะทำเรื่องคำนวณ สร้างกราฟได้ง่ายกว่า

สำหรับใครที่สนใจอยากเข้าร่วมคอร์ส สามารถไปกดติดตามเพจ Data Content ได้เลย เค้าจะมีมาอัพเดตเรื่อยๆ เลยละ สุดท้ายแล้วก็ต้องขอคารวะแอดมินที่สามารถอัดเนื้อหาที่ปกติแล้วควรเรียนกันหลายคอร์สให้เหลือคอร์สเดียวได้ -/I\-
Leave a Reply