การ Subset ย่านละแวกบ้าน
ไม่จำเป็นต้องใช้ย่านละแวกบ้านทั้งหมดใน New York ดังนั้นจึง subset เฉพาะย่านที่อยู่ใน New York County เท่านั้น ซึ่งเป็นวิธีที่คุ้นเคยอยู่แล้ว!
neighborhoods เป็น SpatialPolygonsDataFrame และในบทที่ 2 ได้เรียนรู้วิธี subset โดยอิงจากคอลัมน์ใน slot data แล้ว โดยหลักการคือสร้าง logical vector ก่อน แล้วจึง subset SpatialPolygonsDataFrame เหมือนกับ data frame
จะระบุย่านที่ถูกต้องได้อย่างไร? ลองดูที่:
head(neighborhoods@data)
CountyFIPS คือรหัสตัวเลขที่ใช้ระบุ county หากหารหัสของ New York County ได้ ก็สามารถเก็บเฉพาะแถวที่มีค่านั้นไว้ได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การสร้างภาพข้อมูลภูมิสารสนเทศใน R
คำแนะนำการฝึกหัด
- ออบเจกต์
nyc_tracts_mergeมีรหัส county อยู่ในคอลัมน์COUNTYFPเช่นกัน ใช้unique()เพื่อค้นหารหัสของ New York County - Subset
neighborhoodsโดยเพิ่ม logical ที่ตรวจสอบว่าneighborhoods$CountyFIPSมีค่าที่ถูกต้องหรือไม่ - แก้ไขโค้ดพล็อตให้ใช้
manhat_hoodsแทน neighborhoods - เพิ่ม layer
tm_text()โดย mappingtextไปที่"NTAName"
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
library(tmap)
# Find unique() nyc_tracts_merge$COUNTYFP
# Add logical expression to pull out New York County
manhat_hoods <- neighborhoods[___, ]
tm_shape(nyc_tracts_merge) +
tm_fill(col = "estimate") +
tm_shape(water) +
tm_fill(col = "grey90") +
# Edit to use manhat_hoods instead
tm_shape(neighborhoods) +
tm_borders() +
# Add a tm_text() layer