2012-10-17 65 views
5

我一直在準備我的數據,並在某種程度上合併我的數據集後我的方式更少。合併數據並收到大量數據丟失

因爲我沒有經度和我的數據北緯我一直在使用下面的代碼後,我下載的軟件包郵編tel1是含郵編我的數據)

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

之前合併我有195956觀察,而合併後下降到180090,但我不明白爲什麼。

在我看來我剛剛合併他們在那裏zip等於zip_code和我說從數據集中郵政編碼信息到我的文件夾TEL1

後來我想刪除包含NA行,因爲合併不能定義任何數字或其他。我用這個代碼

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

然後我的觀察數量下降到51006,我簡直不敢相信。我的數據中不能有太多的不匹配。

我還有其他的代碼嗎?

後來我一直在試圖與代碼

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

但是,觀察的數量,刪除重複是一致的(51006)。

我做了什麼錯誤或者是否有辦法在合併數據後再次將我的數據導入到excel文件中,以便我可以手動檢查是否真的有這麼多的不匹配? 謝謝

+0

嘗試使用plyr包中的'join',它比合並更直觀。 –

+2

你也可以看看'merge'的'all'參數。 '合併(zipcode,tel1,by.x ='zip',by.y ='zip_code',all.y = TRUE)' – Justin

+0

謝謝@Justin這完全沒有損失,但如果我繼續最後< - 結果[complete.cases(result),] 刪除NA它直到下降到51006任何解決方案? – user1741021

回答

7

可以使用參數merge

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

但是,對於比賽沒有在郵政編碼數據發現行,會有NA秒。因此,如果你再na.rm或諸如此類的話,你會風與相同的「數據丟失」

檢查那裏有在合併後的lat和長列的NAS行郵編:

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

我的猜測是他們不是有效的郵政編碼或你有的郵政編碼列表不完整。

+0

我覺得郵編很好,我的數據只是由許多不適用於其他列的信息組成。這就是爲什麼我應該刪除經緯度爲NA的行。如果我嘗試最後的代碼<-complete.cases(result [,c('latitude','longitude')]),我沒有得到一個新的數據集,就像我得到值 – user1741021

+0

謝謝我得到它只是刪除列表在將其輸入到R之前,將excel文件的內容); – user1741021