2012-10-17 9 views
5

Ho preparato i miei dati e, in qualche modo, ho ridotto di molto i dati dopo la fusione dei miei set di dati.unione dei dati e ricezione di una grossa perdita di dati

Dal momento che non ho la longitudine e la latitudine in miei dati Sto usando il seguente codice dopo ho scaricato il pacchetto codice postale (tel1 è miei dati contenenti zipcodes)

merge <- merge(zipcode,tel1,by.x=c('zip'),by.y=c('zip_code')) 

prima di fondersi Ho avuto 195956 osservazioni, mentre dopo la fusione è sceso al 180090, ma non capisco perché.

A mio parere ho appena fusa dove zip è stato pari a zip_code e ho aggiunto le informazioni dal codice postale set di dati al mio Tel1 cartella

In seguito ho voluto rimuovere le righe che contengono NA perché l'unione non poteva definire qualsiasi numero o qualsiasi altra cosa. Ho usato questo codice

final <- result[complete.cases(result),] 

Quindi il mio numero di osservazioni è sceso a 51006 che non riesco a credere. Non ci possono essere così tanti disallineamenti nei miei dati.

C'è qualche altro codice che dovrei usare?

In seguito ho cercato di eliminare i duplicati con il codice

last <- with(final,final[order(state,latitude,longitude),]) 

ma il numero di osservazioni è stato coerente (51006).

Cosa ho fatto di sbagliato o c'è un modo per riavere i miei dati in un file excel dopo aver unito i dati in modo da poter verificare manualmente se ci sono davvero così tanti disallineamenti? Grazie

+0

Prova a utilizzare 'join' dal pacchetto plyr, è molto più intuitivo dell'unione. –

+2

puoi anche guardare l'argomento 'all' per' unire '. 'unione (zipcode, tel1, by.x = 'zip', by.y = 'zip_code', all.y = TRUE)' – Justin

+0

grazie a @Justin questo ha funzionato senza alcuna perdita ma se proseguo con il finale <- risultato [complete.cases (result),] per rimuovere il NA fino a quando scende a 51006 qualsiasi soluzione per quello? – user1741021

risposta

7

È possibile utilizzare l'argomento all su merge.

merge(zipcode, tel1, by.x='zip', by.y='zip_code', all.y=TRUE) 

Tuttavia, per le righe in cui le partite non si trovano nei dati CAP, ci saranno NA s. Pertanto, se si allora na.rm o qualcosa in tal senso, sarà vento con lo stesso "perdita di dati"

Controllare i codici di avviamento postale per le righe dove ci sono agenzie nazionali nelle colonne lat e molto tempo dopo la fusione:

tel1[is.na(tel1$latitude) | is.na(tel1$longitude),] 

Suppongo che non siano codici postali validi o che l'elenco di codici di avviamento postale non sia completo.

+0

I codici zip sono validi I miei dati sono costituiti da un'altra colonna in cui molti NA sono dovuti a non ci sono informazioni per questo. ecco perché dovrei cancellare solo le righe dove longitudine e latitudine hanno un NA. Se provo il codice finale <-complete.cases (result [, c ('latitude', 'longitude')]) Non ottengo un nuovo set di dati come prima ottengo i valori – user1741021

+0

grazie che ho appena rimosso gli elenchi del file excel prima di inserirlo in R;) – user1741021

Problemi correlati