03 พฤศจิกายน 2560

วิธีการนำเข้าข้อมูลจาก Excel ลง R Commander

หายไปสักพักเลยนะครับ พอดีผมเพิ่งจะว่างเขียนตอนต่อของครั้งที่แล้วที่เราลองลงโปรแกรม R Commander กัน วันนี้จะมาขอเสนอวิธีการนำเข้าข้อมูลจาก Excel เข้าตัวโปรแกรม R Commander ครับ ซึ่งไม่ยากเลยครับ

ตัวโปรแกรม R Commander จริงๆ แล้วสนับสนุนการนำเข้าไฟล์ข้อมูลจากหลายแหล่งครับ ไม่ว่าจะเป็นไฟล์ของ SPSS, Stata, SAS ก็สามารถเอาข้อมูลที่มีอยู่แล้วมาเปิดได้ครับ แต่วันนี้ผมจะขอเสนอวิธีการนำเข้าจาก Excel เนื่องจากคิดว่าน่าจะเป็นแหล่งเก็บข้อมูลโปรเจคเล็กๆ ของใครๆ หลายๆ คนนะครับ ก่อนอื่นเลยก็อยากจะให้ย้อนไปเตรียมข้อมูลใน Excel ให้เหมาะสมกับการนำเข้ามาในโปรแกรมวิเคราะห์ทางสถิติ ซึ่งสามารถหาอ่านได้จากบล็อกตอนเก่านะครับ (http://www.clinicalepi.com/2015/05/blog-post.html)

วิธีการเอาข้อมูลที่อยู่ในไฟล์ .XLSX เข้าโปรแกรม R Commander ไม่ยากเลยครับ สมมติว่าผมมีข้อมูลใน Excel แบบนี้นะครับ




จะสังเกตว่าข้อมูลของผม อยู่ในไฟล์ Excel ที่ชื่อว่า brugada.xlsx และอยู่ใน Sheet1 นะครับ แถวแรก เป็นชื่อตัวแปรทั้งหมด และข้อมูลมีถึงคอลัมน์ P แถวที่ 2510 (ไม่ได้โชว์ในรูปข้างบนให้ครบครับเนื่องจากมันยาวมาก)



วิธีการเอาข้อมูลนี้ไปลง  R Commander มีดังนี้นะครับ

1. เปิด R Commander
2. เลือกเมนู Data -> Import data -> from Excel File

3. จะปรากฎหน้าต่าง Import Excel Data Set ให้ตั้งค่าก่อนครับ



โดยเราตั้งค่าดังนี้นะครับ
  • ช่อง Enter name of data set: เราสามารถพิมพ์ชื่อเรียกของข้อมูลที่กำลังจะเอาเข้านี้ได้ครับ เนื่องจากโปรแกรม R สนับสนุนการใช้ข้อมูลมากกว่า 1 ชุดข้อมูลในเวลาเดียวกัน ไม่เหมือนโปรแกรมอื่นที่ให้เปิดแค่ไฟล์เดียวต่อครั้ง ดังนั้นเราสามารถตั้งชื่อเรียกเพื่อไม่ให้สับสนได้ครับ หรือจะทิ้งไว้ชื่อ “Dataset” แบบที่เขียนไว้อยู่แล้วก็ได้ครับ
  • Variable names in first row: ถ้าตามแบบข้อมูลที่เรามี แถวแรกเป็นชื่อตัวแปรก็ให้ติ๊กช่องนี้ด้วย
  • Row name in first column: ถ้าตั้งใจจะให้มีชื่อแถวด้วยก็สามารถติ๊กได้ แต่ผมไม่ติ๊กเพราะมีแต่ข้อมูลครับ
  • Convert character data to factor: ช่องนี้ถ้าเกิดว่าใครพิมพ์มาเป็น Male แทนที่จะเป็นเลข 0 1 ก็สามารถให้มันแปลงตรงนี้ได้ครับ
  • Missing data indicator: ให้ทิ้งไว้เป็น Empty cell คือหมายความว่าใน Excel ถ้าช่องไหนไม่มีข้อมูลจะถือเป็นไม่มีข้อมูลใน R ด้วยครับ
4. หลังจากนั้นกด OK โปรแกรมจะให้เลือกไฟล์ Excel ต่อครับ


5. ถ้าไฟล์เรามีหลาย Sheet โปรแกรมอาจจะขึ้นมาให้เลือก Sheet ที่เราต้องการด้วยครับ แต่ถ้ามี Sheet เดียวมันก็จะ Import มาให้เลย โดยสามารถดูสถานะได้ที่ด้านล่างของ R Commander ครับ


6. ทีนี้ถ้าเราต้องการจะดูว่าข้อมูลเป็นอย่างไร มีทางเลือกสองอย่างคือปุ่มด้านบนครับ


ปุ่ม Dataset ที่เป็นตัวสีน้ำเงินคือเราสามารถเลือกไฟล์ที่กำลังวิเคราะห์ได้ (ถ้าเปิดหลายไฟล์) ปุ่มถัดมาคือ Edit data set ถ้าคลิกก็จะขึ้นหน้าต่าง Data Editor ในตัวโปรแกรม R ให้แก้ไขได้ครับ (แก้ได้ด้วยการดับเบิ้ลคลิ้ก) แบบนี้


ทั้งนี้ผมไม่แนะนำให้แก้ข้อมูลแบบนี้ครับ เพราะหมายความว่าถ้าแก้ตรงนี้เราจะไม่ได้ไปแก้ในฐานข้อมูล Excel ด้วย จะทำให้งงถ้าเราปิด R ไปแล้ว import ข้อมูลมาใหม่นะครับ เราควรจะแก้ที่ฐานข้อมูลใน Excel เลย แล้วค่อย import มาใหม่ ยกเว้นกรณีจำเป็นมากๆ จริงๆ ครับ แก้เสร็จแล้วก็กดปุ่มปิดด้านบนขวาได้ครับ

แต่ถ้าเรากดปุ่ม View data set จะขึ้นหน้าต่างแบบนี้แทนครับ ไม่สามารถแก้ไขข้อมูลได้ครับ


ทั้งนี้ ตอนนี้ข้อมูลก็เข้ามาอยู่ในโปรแกรม R Commander ให้ใช้แล้วครับ เช่นเราอยากทดลองหา Descriptive Statistics อย่างค่าเฉลี่ย ของอายุ (ตัวแปร age) ก็ให้ใช้คำสั่ง Statistics -> Summaries -> Numerical summaries


จะปรากฎหน้าต่างให้เลือกตัวแปรครับ ก็เลือก age


ถ้าอยากจะเจาะจงด้วยว่าจะให้คำนวณอะไรให้บ้าง ก็เลือกแท็บ Statistics ด้านขวา ก็จะมีให้เลือกย่อยครับ แต่โปรแกรมจะเลือกค่าที่เราใช้บ่อยๆ ให้อัตโนมัติอยู่แล้ว นั่นก็คือค่า Mean, SD, IQR, Quantile ที่ 0 .25 .5 .75 1 (ถ้ายังจำกัดได้ Quantile 0.5 ก็คือ Median นั่นเอง และ 0 = min, 1 ก็ max)


เมื่อเรากด OK ตัวโปรแกรมจะแสดงผลออกมาในช่อง Output เป็นตัวสีน้ำเงินหลังจากคำสั่งคล้ายแบบนี้นะครับ


ก็คือ ในตัวแปร age นี้มีข้อมูลอยู่ทั้งหมด 2509 คน (ด้านขวาสุด) มีค่า mean อยู่ที่ 31.56556 ค่า sd = 4.968339, IQR 9, Median 32, Minimum 23, Maximum 41 นั่นเองครับ

อยากจะให้สังเกตกันดีๆ ก่อนจะเอาค่าที่ได้ไปกรอกหรือทำตารางสรุปนะครับ ว่า

  1. จำนวน n ครบหรือเปล่า บางทีข้อมูลขาดหายครับ ต้องตามไปเช็คในไฟล์ Excel ด้วยว่าข้อมูลหายไปไหน อันนี้เจอบ่อยครับ
  2. Minimum, Maximum  ถูกต้องไหม เช่นงานวิจัยเราทำในคนไข้ 18-60 ปี ถ้าได้แบบนี้มาก็คือน่าจะโอเค เพราะต่ำสุดคืออายุ 23 ปี และมากสุดคืออายุ 41 ปีนั่นเองครับ อันนี้เจอคนพิมพ์ผิดก็บ่อยอีกเช่นกันครับ
  3. ข้อมูลอยู่ในการกระจายแบบไหน ถ้าข้อมูลเป็น normal distribution ก็สามารถใช้ Mean, SD ได้ แต่ถ้าข้อมูลไม่ได้เป็น Normal Distribution ควรใช้ Median, Range มากกว่า สำหรับวิธีการเช็ค Distribution ขอยกยอดไปเขียนครั้งต่อไปน่ะครับ

เป็นอย่างไรบ้างครับ พอจะทำกันได้บ้างไหมครับ ยังไงลองเล่นกับข้อมูลดูนะครับ สงสัยถามมาใน comment ได้ครับ

5 ความคิดเห็น:

ช่วยแสดงความคิดเห็นเกี่ยวกับบทความนี้ด้วยนะครับ
Please leave your comments about this topic.