2016-10-06 13 views
-1

私は2008年と2004年の2つのデータフレームを持っています。データフレームの例は以下のとおりです。ファジーマッチの列に2つのデータフレームをマージするR

df_08 <- read.table(text = c(" 
observation  year  x code_location  location 
1    2008  300 23-940 town no. 1 town no. 1 
2    2008  234 23-941 town no. 2 town no. 2  
3    2008  947 23-942 city St 23 city St 23 
4    2008  102 23-943 Mtn town 5 Mtn town 5 "), header = TRUE) 

df_04_12 <- read.table(text = c(" 
observation  year  y code_location   location 
1    2004  124 23-940 town no. 1  town no. 1 
2    2004  395 23-345 town # 2  town # 2 
3    2004  1349 23-942 city St 23  city St 23  
4    2012  930 53-443 Mtn town 5  Mtn town 5 
5    2012  185 99-999 town no. 1  town no. 1 
6    2012  500 23-941 town Number 2 town Number 2  
7    2012  185 34-942 city Street 23 city Street 23 
8    2012  195 23-943 Mt town 5  Mt town 5 "), header = TRUE) 

私は場所の変数を使用してdf_04_12するdf_08をマージする(コードは、年全体で一貫していません)。しかし、ロケーション名のわずかな違い(例:Mtn v。Mtまたはno)。 v。#、結果は一致しません。ロケーション名の間にこれらのわずかな違いがある場合、これらのデータフレームをマージして次のようにする方法がありますか?私は現在、マージのためにどのように位置を合わせるか分からないので、これについてのコードはありません。

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 
+1

** fuzzyjoin **パッケージをご覧ください。 – joran

答えて

0

文字変数にlevenshtein distanceを使用できますが、シンボルを考慮する方法はありません。マージする前にすべてのシンボルをクリアし、stringdistパッケージを使用することをお勧めします。この問題の解決策はまったくありません。データに関連して独自のメソッドを開発する必要があります。 ファジーマッチングで使用されるメソッドの中には、文字列距離の計算とデータのSoundX変換がある場合、データに適したものを見つけるだけで済みます。

関連する問題