【问题标题】:merging data and receiving a big loss of data合并数据并接收大量数据丢失
【发布时间】:2012-10-07 20:14:03
【问题描述】:

我一直在准备我的数据,但不知何故,在合并我的数据集后我的数据少了很多。

由于我的数据中没有经度和纬度,所以我在下载包 zipcode 后一直使用以下代码(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 文件,以便我可以手动检查是否真的有这么多不匹配? 谢谢

【问题讨论】:

  • 尝试使用 plyr 包中的join,它比合并更直观。
  • 您还可以查看allmerge 的参数。 merge(zipcode, tel1, by.x='zip', by.y='zip_code', all.y=TRUE)
  • 感谢@Justin,这完全没有损失,但如果我继续使用 final
  • 我们无法解决您的数据中存在 NA 值的问题。如果任何列中有 NA 值,则使用 complete.cases 将删除整行。也许在读取数据时出现了问题,这些数据在不应该出现的地方产生了缺失值......?
  • 好点有一些行包含 NA 因为我的数据不完整。我怎样才能设法将 NA 从纬度和经度列中删除

标签: r merge duplicates


【解决方案1】:

可以将all 参数用于merge

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

但是,对于在邮政编码数据中未找到匹配项的行,将有 NAs。因此,如果你然后na.rm 或类似的东西,你将结束同样的“数据丢失”

检查合并后lat和long列中有NA的行的邮政编码:

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

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

【讨论】:

  • 我猜邮政编码很好,我的数据只包含另一列,其中许多 NA 是由于没有相关信息。这就是为什么我应该删除经度和纬度具有 NA 的行。如果我尝试使用代码 final
  • 谢谢我刚刚从 excel 文件中删除了列表,然后再将其输入 R ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 2015-01-31
  • 2019-06-18
  • 2017-09-08
  • 1970-01-01
相关资源
最近更新 更多