2017-12-28 12 views
0

フィールドの下に2列のcsvファイルで、アラインメントとともにパーセントで一致するパターンを取得する方法。 注:記載されている値が正しくない場合があります。しかし、アラインメントパターンがどのくらい正しいことができるかを知りたい。場合列アラインメントパターンの検索

Field1 Field2 % match 
aaaa aa  66.667 
bbb  ab  40 
ccc  ccd  66.667 
ddd  ddcv  57.142 
+0

ようこそ! [最小限で完全で検証可能な例を作成する方法についてはこのチュートリアル](https://stackoverflow.com/help/mcve)をご覧になり、必要な出力と既に試したことについて詳しく説明してください。 – Vincent

+1

'%match'を計算するルールはどうですか? – Uwe

答えて

0

あなたは、あなたが「レーベンシュタイン距離」や「JARO-ウィンクラーの距離」を使用して計算することができる2つの文字列の間の類似性の割合を知りたいです。

library(dplyr) 

#Levenshtein distance 
library(RecordLinkage) 
df_lv <- df %>% 
    mutate(per_match = levenshteinSim(Field1, Field2)) 
df_lv 
# Field1 Field2 per_match 
#1 aaaa  aa 0.5000000 
#2 bbb  ab 0.3333333 
#3 ccc ccd 0.6666667 
#4 ddd ddcv 0.5000000 
#5  aa aas 0.6666667 
#6  aa aba 0.6666667 


#Jaro–Winkler distance 
library(stringdist) 
df_jw <- df %>% 
    mutate(per_match = stringsim(Field1, Field2, method="jw")) 
df_jw 
# Field1 Field2 per_match 
#1 aaaa  aa 0.8333333 
#2 bbb  ab 0.6111111 
#3 ccc ccd 0.7777778 
#4 ddd ddcv 0.7222222 
#5  aa aas 0.8888889 
#6  aa aba 0.6111111 

#sample data 
> dput(df) 
structure(list(Field1 = c("aaaa", "bbb", "ccc", "ddd", "aa", 
"aa"), Field2 = c("aa", "ab", "ccd", "ddcv", "aas", "aba")), .Names = c("Field1", 
"Field2"), class = "data.frame", row.names = c(NA, -6L)) 

注:私はあなたがあなたの記事で言及した割合を計算する方法がわかりません。 @Uweはコメントセクションですでに述べたとおり、他の人があなたを助けるために、これらの番号を取得するために使用したアルゴリズムをお知らせください。

+0

私は値を無作為に計算しましたが、私は同じようにするために整列が必要です。 –

+0

私はそれを理解すれば本当にわかりません。 [オリジナル投稿](https://stackoverflow.com/posts/48003035/edit)にパーセント計算アルゴリズムを説明することはできますか? – Prem

+0

私は、例えば、 "aa"と "aa"を比較すると、 "aa"は異なっていて、 "aba"は正しく異なるように、整列に基づいた%計算を望みました。 –