2017-03-12 3 views
0

これは私の最初の質問ですので、間違いをお許しください。 私はアドレスが1行にあり、多くの欠損値といくつかのエラーがあるデータフレームを持っています。パターンの値がtrueの場合はフィールドを更新してください

住所

  • Braemorドライブ、クロンターフ、Co.Dublin
  • メドウアベニュー、ダンドラム
  • 私は希望
  • Philipsburghアベニュー、マリノ
  • マートル広場、海岸

住所の値に、たとえばMarino、FairviewまたはCloが含まれている場合など、新しいフィールド "District"を追加する地区がダブリンである必要があります。3

Dublin3 <- c("Marino", "Fairview", "Clontarf") 
matches <- unique (grep(paste(Dublin3,collapse="|"), 
DubPPReg$Address, value=TRUE)) 

Rを使用すると、一致がtrueの地区の値はどのように更新できますか?

答えて

1
# I've created example data frame with column Adress 
df <- data.frame(Adress = c("Braemor Drive", 
          "Clontarf", 
           "Co.Dublin", 
           "Meadow Avenue", 
           "Dundrum", 
           "Philipsburgh Avenue", 
           "Marino", 
           "Myrtle Square", "The Coast")) 
# And vector Dublin 
Dublin3 <- c("Marino", "Fairview", "Clontarf") 

# Match names in column Adress and vector Dublin 3 
df$District <- ifelse(df$Adress %in% Dublin3, "Dublin 3",FALSE) 

    df 
       Adress District 
1  Braemor Drive FALSE 
2   Clontarf Dublin 3 
3   Co.Dublin FALSE 
4  Meadow Avenue FALSE 
5    Dundrum FALSE 
6 Philipsburgh Avenue FALSE 
7    Marino Dublin 3 
8  Myrtle Square FALSE 
9   The Coast FALSE 

代わりのFALSEあなたは何か他のもの(例えばNA)を選択することができます。

編集:データがベクトルである場合は、この

match <- ifelse(grepl("Marino|Fairview|Clontarf", df, ignore.case = T), "Dublin 3",FALSE) 

と出力のようgreplを使用してmachesを見つけることができます。この

df 
[1] "Braemor Drive, Churchtown, Co.Dublin" 
[2] "Meadow Avenue, Clontarf, Dublin 14" 
[3] "Sallymount Avenue, Ranelagh"   
[4] "Philipsburgh Avenue, Marino" 

のように見えます

df <- c("Braemor Drive, Churchtown, Co.Dublin", 
     "Meadow Avenue, Clontarf, Dublin 14", 
     "Sallymount Avenue, Ranelagh", "Philipsburgh Avenue, Marino") 

です
[1] "FALSE" "Dublin 3" "FALSE" "Dublin 3" 

あなたが探している一致する名前の1つまたはすべて(つまり、 Marino、FairviewまたはClontarf)はdfの2行目と4行目にあります。

+0

ありがとうMiha。あなたのコード例は私が試したときに完全に動作しますが、私の例では動作させることはできません。私が完全な住所 "Philipsburgh Avenue、Marino、Dublin 3"と完全に一致すると、それは機能します。しかし、テキスト内の1つの単語ではありません。 – ClareMc

+0

その1語を 'Dublin3'ベクトルに定義/挿入し、コードを再度実行します。 – Miha

+0

私は Dublin3 <しようとする - C( "アベニュー"、 "フェア"、 "クロンターフ") DF $ディストリ< - ifelse(%Dublin3、 "ダブリン3" で$住所DF%、FALSE) に上記たとえば、完全一致の「Clontarf」を除くすべてのエントリで結果はfalseになります。 – ClareMc

関連する問題