ความเห็น: 2
รวมกันเมื่อฉันต่างกับเธอ 2: ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป
จากความเดิมตอนที่แล้วในบันทึก "รวมกันเมื่อฉันต่างกับเธอ: ก้าวย่างทางเดิน ลืมเลือนคืนวัน ดั้นด้นไป"
เราต้องการรวมข้อมูลที่อยู่คนละแฟ้มข้อมูลเข้าด้วยกัน โดยที่ข้อมูลที่จะรวมเข้าด้วยกันนั้นเป็นข้อมูลเรื่องเดียวกันแต่ใช้การเก็บข้อมูลโดยคนหลายคนเพื่อความรวดเร็วในการเก็บข้อมูล ใน
กรณีเช่นนี้เราจะใช้ฟังก์ชัน rbind() สำหรับรวมข้อมูลจากแต่ละคนเข้าด้วยกัน
แต่หากบังเอิญว่าข้อมูลเดียวกันนี้ของแต่ละคนมีตัวแปรที่แตกต่างกันอยู่ เราจะใช้ฟังก์ชัน rbind() เหมือนปกติจะไม่ได้แล้ว เนื่องจากจำนวน/ ชื่อตัวแปรแตกต่างกัน
ยกตัวอย่างให้เห็นแบบง่าย ๆ ดังนี้ครับ
สมมติว่าแฟ้มข้อมูลแรก มีตัวแปรทั้งหมด ๗ ตัวดังนี้
> names(mydata1)
[1] "id" "age" "sex" "a1" "a2" "a3" "a9"
และแฟ้มข้อมูลแฟ้มที่ ๒ มีจำนวนตัวแปร ๙ ตัวแปรดังนี้
> names(mydata2)
[1] "id" "age" "sex" "a1" "a2" "a3" "a4" "a5" "a6"
หรือแฟ้มข้อมูลทั้ง ๒ ข้างต้นมีตัวแปรและชื่อตัวแปรดังรูป
แฟ้มข้อมูลแรก (mydata1)
แฟ้มข้อมูลที่ ๒ (mydata2)
เราจะเห็นว่าจำนวนตัวแปรของแฟ้มข้อมูลทั้งสองไม่เท่ากัน เมื่อเราใช้ฟังก์ชัน rbind() รวมข้อมูลทั้งสองเข้าด้วยกันจะได้ผลลัพธ์เป็น
> rbind(mydata1,mydata2)
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
ไม่สามารถรวมแฟ้มข้อมูลทั้งสองเข้าด้วยกันได้เนื่องจากมีจำนวน/ ชื่อตัวแปรไม่เหมือน/เท่ากัน
ในกรณีที่จำนวนตัวแปรมีไม่มาก (ดังเช่นตัวอย่าง) เราสามารถที่จะดูว่าตัวแปรที่ต่างกันในแต่ละแฟ้มข้อมูลนั้นมีตัวแปรอะไรบ้าง และนำไปสู่การจัดการทำให้จำนวนตัวแปรเท่ากัน หรือทำให้ชื่อตัวแปรเหมือนกัน เพื่อที่จะใช้ฟังก์ชัน rbind() รวมข้อมูลเข้าด้วยกัน
แต่หากแฟ้มข้อมูลที่เราจะรวมข้อมูลเข้าด้วยกันมีจำนวนตัวแปรจำนวนมาก เราคงต้องใช้ความพยายามอย่างมากในการตรวจสอบความแตกต่างของตัวแปรจากทั้งสองแฟ้มข้อมูล
จากตัวอย่างแฟ้มข้อมูลที่มีจำนวนตัวแปรไม่มาก เราพบว่า
- แฟ้มข้อมูลแรก (mydata1) มีตัวแปรที่ไม่มีอยู่ในแฟ้มข้อมูลที่ ๒ (mydata2) คือตัวแปร "a9"
- แฟ้มข้อมูลที่ ๒ (mydata2) มีตัวแปรที่ไม่มีในแฟ้มข้อมูลแรก (mydata1) คือตัวแปร "a4", "a5" และตัวแปร "a6"
- แฟ้มข้อมูลทั้งสองมีตัวแปรที่เหมือนกันอยู่คือตัวแปร "id", "age", "sex", "a1", "a2" และตัวแปร "a3"
R มีฟังก์ชันที่สามารถนำมาประยุกต์ใช้กับกรณีนี้ได้คือฟังก์ชัน setdiff()
หากต้องการตรวจสอบว่ามีตัวแปรใดบ้างที่มีอยู่ในแฟ้มข้อมูลที่หนึ่ง (mydata1) แต่ไม่มีในแฟ้มข้อมูลที่สอง (mydata2) ก็จะใช้บรรทัดคำสั่ง
> setdiff(colnames(mydata1),colnames(mydata2))
[1] "a9"
หากต้องการตรวจสอบว่ามีตัวแปรใดบ้างที่มีอยู่ในแฟ้มข้อมูลที่สอง (mydata2) แต่ไม่มีในแฟ้มข้อมูลที่หนึ่ง (mydata1) ก็จะใช้บรรทัดคำสั่ง
> setdiff(colnames(mydata2),colnames(mydata1))
[1] "a4" "a5" "a6"
หรือหากเราจะดูว่าแฟ้มข้อมูลทั้งสองมีตัวแปรอะไรบ้างเหมือนกันเราสามารถใช้ฟังก์ชัน intersect() ตรวจสอบได้เช่นกัน
> intersect(colnames(mydata1), colnames(mydata2))
[1] "id" "age" "sex" "a1" "a2" "a3"
อิอิอิ
เราเอง
เพลง: หนุ่มทุ่งกระโจมทอง
ศิลปิน: เสรี รุ่งสว่าง
นับได้ว่าเป็นเพลงประจำเวทีลูกทุ่งเลยก็ว่าได้ เนื่องจากเพลงนี้ถูกนำมาใช้ในการประกวดร้องเพลงลูกทุ่งอยู่บ่อยครั้ง
บันทึกอื่นๆ
- เก่ากว่า « ตามท้าวฯ เข้าแชร์: ก้าวย่างทางเด...
- ใหม่กว่า » ต้นกุมภา สายลมแห่งการเปลี่ยนแปลง...
09 Febuary 2015 21:54
#101864
น้ากลับมาเหมือนเดิมแล้ว
โปรแกรม คำสั่ง
Z-80 ป่าวน้า