grepを使用していくつかのアドレスデータを整理しています。ここでの目標は特定のレコードと列の通り/道/道路名などです、すでに次の変数tempval、例えば、個々の単語にスペースによって分割された:私は、通りの名前に続く単語のいくつかがあるかもしれない場所を見つけるために、次のステートメントを使用しR:grepを使用して重要度の順に1つまたは複数の一致を見つけよう
R > tempval
[1] "38" "WILLOW" "PARK"
:
stID <- grep("STREET|\\bST\\b|AVENUE|\\bAVE\\b|\\bAV\\b|WAY|BOULEVARD|\\bBD\\b|ROAD|\\bRD\\b|PLACE|\\bPL\\b|ESPLANADE|TERRACE|PARADE|DRIVE|\\bDR\\b|\\bPARK\\b|LANE|CRESCENT|\\bCOURT\\b|b\\CRES\\b", tempval, ignore.case = T)
R > stID
[1] 3
Th大丈夫です、私は "公園"が3番目の要素であることを知っています、それは私の通り番号と名前になる前に来るものです。
しかし問題は、例えば、いくつかのマッチそうlength(stID) > 1
が存在する場合に生じる:だからここ
R > tempval
[1] "38" "PARK" "ST"
、私は中、Rは、一つだけの一致を返してもらうにはどうすればよい
R > stID
[1] 2 3
を取得します重要度の順序(grepのパターンで文字列を配置した順序)言い換えれば、Rが "ST"と "PARK"の両方を見つけた場合、 "ST"が "PARK"よりも重要であるので、stID = 3
だけを返しますか?
非常に良い、ありがとう! grepが心に浮かぶ最初のツールでしたが、重要な順番で文字列のベクトルとのマッチを使用することは完全に意味があります。 – Neodyme