在R中使用模糊匹配合并列上的两个数据帧

时间:2016-10-06 18:39:15

标签: r merge

我有两个数据帧,一个用于2008,另一个用于2004和2012数据。数据帧的示例如下。

observation     year     y    code_location         location.x      location.y    y.y
1               2004     124  23-940 town no. 1     town no. 1      town no.1     300
2               2004     395  "23-345 town # 2"     "town # 2"      "town no. 2"  234
3               2004     1349 23-942 city St 23     city St 23      city St 23    947
4               2012     930  53-443 Mtn town 5     Mtn town 5      Mtn town 5    102   
5               2012     185  99-999 town no. 1     town no. 1      town no. 1    300   
6               2012     500  23-941 town Number 2  town Number 2   town no. 2    234    
7               2012     185  34-942 city Street 23 city Street 23  city St 23    947   
8               2012     195  23-943 Mt town 5      Mt town 5       Mtn town 5    102

我想使用位置变量将df_08合并到df_04_12(代码在多年内不一致)。但是,位置名称略有不同,例如Mtn v.Mt或no。 v。#,导致不匹配。鉴于位置名称之间的这些微小差异,有没有办法合并这些数据框并获得以下内容?我目前没有任何代码,因为我不确定如何匹配合并的位置。

var firstQuery = queries.head
val queriesNoHead = queries.drop(0)

for( q <- queriesNoHead ){
  firstQuery = firstQuery union q
}

1 个答案:

答案 0 :(得分:0)

您可以在字符变量上使用levenshtein距离,但无法考虑符号。我建议您在合并之前清除所有符号,然后使用stringdist包。这个问题没有干净的解决方案,您必须开发自己的方法,因为它与您的数据有关。 模糊匹配中使用的一些方法是字符串距离计算和数据的SoundX转换,您只需要找出适合您的数据的方法。