การตรวจสอบข้อมูลก่อนนำมาจับคู่
การบังคับใส่ข้อมูลเข้าไปใน slot data โดยตรงนั้นไม่ได้ผล เพราะจะทำให้ความสัมพันธ์ที่ถูกต้องระหว่างแถวและ spatial object สูญหายไป แล้วจะเพิ่มข้อมูลรายได้เข้าไปใน polygon data ได้อย่างไร? ฟังก์ชัน merge() ใน sp ถูกออกแบบมาเพื่อจุดประสงค์นี้โดยเฉพาะ
อาจเคยใช้ merge() กับ data frame มาก่อน sp::merge() มีโครงสร้างที่คล้ายกันมาก แต่รับ Spatial*** object และ data frame เป็น input แล้วคืนค่าเป็น Spatial*** object ใหม่ ซึ่ง slot data จะเป็นผลการ merge ระหว่าง slot data เดิมกับ data frame นั้น การ merge นี้ต้องการให้ทั้ง spatial object และ data frame มีคอลัมน์ที่ใช้เป็น ID สำหรับจับคู่ร่วมกัน
ทั้ง nyc_tracts และ nyc_income ต่างมีคอลัมน์ที่เก็บ tract ID จึงเหมาะอย่างยิ่งสำหรับการ merge สองชุดข้อมูลนี้เข้าด้วยกัน อย่างไรก็ตาม ควรตรวจสอบให้แน่ใจก่อนว่า ID ที่จะใช้นั้นไม่ซ้ำกัน และมีค่าที่ตรงกันครบทุกแถวในทั้งสองชุดข้อมูล
มาตรวจสอบสิ่งเหล่านี้ก่อนที่จะไปขั้นตอนการ merge
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างภาพข้อมูลภูมิสารสนเทศใน R
คำแนะนำการฝึกหัด
- ใช้
any()ร่วมกับduplicated()บนnyc_income$tractเพื่อตรวจสอบว่าทุกแถวในnyc_incomeมี tract ID ที่ไม่ซ้ำกัน - ใช้
any()ร่วมกับduplicated()บนnyc_tracts$TRACTCEเพื่อตรวจสอบว่าทุกแถวในnyc_tractsมี tract ID ที่ไม่ซ้ำกัน - ใช้
all()บนnyc_tracts$TRACTCE %in% nyc_income$tractเพื่อตรวจสอบว่า tract ทั้งหมดในnyc_tractsมีอยู่ในnyc_income - ใช้
all()บนnyc_income$tract %in% nyc_tracts$TRACTCEเพื่อตรวจสอบว่า tract ทั้งหมดในnyc_incomeมีอยู่ในnyc_tracts
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Check for duplicates in nyc_income
# Check for duplicates in nyc_tracts
# Check nyc_tracts in nyc_income
# Check nyc_income in nyc_tracts