【发布时间】:2011-08-19 10:31:20
【问题描述】:
我有两个数据框 (x & y),其中 ID 为 student_name、father_name 和 mother_name。由于印刷错误(“n”而不是“m”、随机空格等),我有大约 60% 的值没有对齐,尽管我可以观察数据并看到它们应该对齐。有没有办法以某种方式降低不匹配的水平,以便手动编辑至少可行?数据框有大约 700K 的观测值。
R 最好。我知道一点 python 和一些基本的 unix 工具。附:我阅读了agrep(),但不明白它如何在实际数据集上工作,尤其是当匹配超过一个变量时。
更新(已发布赏金的数据):
Here 是两个示例数据帧,sites_a 和 sites_b。它们可以在数字列 lat 和 lon 以及 sitename 列上匹配。了解如何在 a) 仅 lat + lon、b) sitename 或 c) 两者上完成此操作会很有用。
您可以获取作为 gist 发布的文件 test_sites.R。
理想情况下,答案应该以
结尾merge(sites_a, sites_b, by = **magic**)
【问题讨论】:
-
您能否提供一小部分数据(或向我们提供一些虚假数据)?
-
@RomanLuštrik 虽然这不是我最初的问题,但我遇到了类似的问题,创建了一些示例数据,并提供了赏金。
-
@David 你试过
merge(sites_a, sites_b, by = c("lon", "lat"))吗?在您的情况下,如果您想按名称合并,则必须投入更多精力使两个 data.frames 中的名称匹配(祝您好运,呵呵)。 -
@RomanLuštrik 在示例中,坐标具有不同的精度级别。因此,
round(sites_b[,c('lat','lon')],2)上的匹配将接近 - 除非出现符号错误。