Verificare la corrispondenza dei dati
Forzare i tuoi dati nello slot data non funziona perché perdi la corrispondenza corretta tra righe e oggetti spaziali. Come puoi aggiungere i dati sul reddito ai dati poligonali? La funzione merge() in sp è pensata proprio per questo scopo.
Probabilmente hai già visto merge() con i data frame. sp::merge() ha quasi la stessa struttura, ma gli passi un oggetto Spatial*** e un data frame e restituisce un nuovo oggetto Spatial*** in cui lo slot data è ora l’unione tra lo slot data originale e il data frame. Per effettuare questa unione, è necessario che sia l’oggetto spaziale sia il data frame abbiano una colonna con gli ID su cui effettuare il match.
Sia nyc_tracts sia nyc_income hanno colonne con gli ID dei census tract, quindi sono ottimi candidati per unire i due insiemi di dati. Tuttavia, è sempre una buona idea controllare che gli ID proposti siano univoci e che esista una corrispondenza per ogni riga in entrambi i dataset.
Facciamo queste verifiche prima di procedere con il merge.
Questo esercizio fa parte del corso
Visualizzare dati geospaziali in R
Istruzioni dell'esercizio
- Usa
any()conduplicated()sunyc_income$tractper verificare se ogni riga innyc_incomeha un ID di tract univoco. - Usa
any()conduplicated()sunyc_tracts$TRACTCEper verificare se ogni riga innyc_tractsha un ID di tract univoco. - Usa
all()sunyc_tracts$TRACTCE %in% nyc_income$tractper verificare che tutti i tract dinyc_tractssiano presenti innyc_income. - Usa
all()sunyc_income$tract %in% nyc_tracts$TRACTCEper verificare che tutti i tract dinyc_incomesiano presenti innyc_tracts.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Check for duplicates in nyc_income
# Check for duplicates in nyc_tracts
# Check nyc_tracts in nyc_income
# Check nyc_income in nyc_tracts