合并数据并收到大量数据丢失

use*_*021 5 merge r duplicates

我一直在准备我的数据,并且在合并我的数据集后,我的数据减少了.

由于我的数据中没有经度和纬度,因此在下载包邮政编码后,我一直在使用以下代码(tel1我的数据包含zipcodes)

merge <- merge(zipcode,tel1,by.x=c('zip'),by.y=c('zip_code'))
Run Code Online (Sandbox Code Playgroud)

在合并之前,我有195956个观测值,而合并后它下降到180090,但我不明白为什么.

在我看来,我只是它们合并哪里zip等于zip_code和我说从数据集中邮政编码信息到我的文件夹TEL1

之后我想删除包含NA的行,因为合并无法定义任何数字或其他任何数字.我用过这段代码

final <- result[complete.cases(result),]
Run Code Online (Sandbox Code Playgroud)

然后我的观察数量下降到51006,我简直无法相信.我的数据不会有这么多的不匹配.

我还应该使用其他代码吗?

之后我一直试图用代码删除重复项

 last <- with(final,final[order(state,latitude,longitude),])
Run Code Online (Sandbox Code Playgroud)

但观察的数量是一致的(51006).

我做错了什么或有没有办法在合并数据后再次将我的数据存入excel文件,以便我可以手动检查是否真的有这么多不匹配?谢谢

Jus*_*tin 7

可以使用all参数来merge.

merge(zipcode, tel1, by.x='zip', by.y='zip_code', all.y=TRUE)
Run Code Online (Sandbox Code Playgroud)

但是,对于在zipcode数据中找不到匹配项的行,将会有NAs.因此,如果你那么na.rm或那样的事情,你将结束相同的"数据丢失"

在合并后检查纬度和长列中有NA的行的邮政编码:

tel1[is.na(tel1$latitude) | is.na(tel1$longitude),]
Run Code Online (Sandbox Code Playgroud)

我的猜测是它们不是有效的邮政编码,或者你的邮政编码列表不完整.