文字列の中にあるいらない文字を取り除く

# 文字列の中にあるいらない文字を取り除く

[Exploratory](https://exploratory.io/)ではstr_removeという関数を使って、指定した文字を文字列データから簡単に取り除くことができます。

今回は、このstr_remove関数について紹介していきます。

# str_remove関数の基本 

str_remove関数には2つの引数があり、次のように記述されます。

```r
str_remove(列名, "削除したい文字列")
```

1つ目の引数は削除したい文字が入っている列の名前です。

2つ目の引数は、削除したい文字列を指定します。例えば、"田中さん"という文字列データがあって、その中から"さん"という文字を削除したい場合は、"さん"と指定します。

しかし、ここで一つ注意が必要です。

もし、文字列データが "田中さん"、"鈴木さん"となっていた場合に、str_remove(name,"さん")とすると、"田中","鈴木さん"という値が返ってきて、"さん"という文字列が残ってしまいます。

これは、str_remove関数が１番目に出てきた指定された文字列のみを削除するからです。

このような場合には、str_remove_allという関数を使うことで、文字列データに含まれている「全て」の"さん"を削除することができます。

それでは、str_removeの具体的な使い方を見ていきましょう。

# 不要な文字列を取り除く

例えば、下記のように、文字列の中にカンマ( , )があって削除したいことがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/1aafb8f2-8552-8680-066d-ca85893d4c58.png)


こういったときに、str_removeを使うことで指定した文字列を削除することができます。

列ヘッダメニューから、「テキストを操作」をクリックし、「ある文字列を取り除く」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/c6540095-d60f-9428-7c6d-6c539c189517.png)


ダイアログが開き、既にstr_removeの関数と、1つ目の引数である列名が入力されています。

そのため、削除したい文字列の ","を 入力します。

完成したコードは下記のようになります。

```r
str_remove(Item, ",")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/16acf2aa-19ad-6907-d067-ad814ac9b406.png)


実行すると、Itemのカンマ(,)がある文字列からカンマ(,)が取り除かれていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/b49cca37-918b-eb1d-5e42-bd31d8485afa.png)


しかし、文字列に複数のカンマが含まれている場合(今回の場合はAnimals, live, nes)は、一つ目のカンマのみを削除した形(Animals live, nes)となりました。

これは、str_removeの基本でも説明したように、指定した文字列が複数ある場合は、文字列の最初の物のみ削除されるためです。

ではこの問題を対処するために、`str_remove_all`という関数を使ってみましょう

# 不要な文字列を全て取り除く

`str_remove_all`は指定した文字列が列の中に複数あった場合でも、全ての文字列を削除することができる関数です。

列ヘッダメニューから、「テキストを操作」をクリックし、「ある文字列を取り除く (全て)」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/e45562a4-eb2b-6f16-d0e2-1dc737505776.png)



ダイアログが開き、既にstr_remove_allの関数と、1つ目の引数である列名が入力されています。

そのため、削除したい文字列の ","を 入力します。

完成したコードは下記のようになります。


```r
str_remove_all(Item, ",")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/736fd846-8618-f859-cc0e-1501dea5ac50.png)


実行すると、カンマ(,)が複数あった場合でも、列内にある全てのカンマ(,)が取り除かれていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/5aa7eb43-2664-66c6-95f2-ec9188222064.png)




# 取り除きたい文字の候補を複数指定したい場合

もし、削除したい文字列の候補が複数ある場合は、論理和の記号である" | "(縦スラッシュ)を使って複数指定することができます。

例えば、文字列データから"A"もしくは"B"を削除したい場合は、str_remove(Column,"A|B")と指定することができます。

今回は、下記のように文字列の中にある", live, nes"と", other"を削除したいとします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/5766db9c-8dcf-2834-dac9-d9a263fbe839.png)


列ヘッダメニューから、「テキストを操作」をクリックし、「ある文字列を取り除く 」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/d8128aad-dde0-6403-35a2-c0747a1139c6.png)



ダイアログが開き、既にstr_removeの関数と、1つ目の引数である列名が入力されています。

今回は取り除きたい文字列データが複数あるので、2つ目の引数に" | "を使って以下のように文字列を指定します。

```r
str_remove(Item, ", live, nes|, other")
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/2d63c76c-5ab4-74f0-f993-d1247d4d0c30.png)


実行すると、", live, nes"と", other"という文字列を削除することができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192148/f1deb133-7d87-83ac-e52b-2a6c15e05eb9.png)



---

# Exploratoryデータ・アカデミー

データ分析に関してもっと知りたい、学びたいという方は、私達が提供しているトレーニングやセミナーに参加してみてください。

[こちら](https://ja.exploratory.io/data-academy-jp?utm_campaign=excel_series_1&utm_medium=blog&utm_source=qiita)のExploratoryデータ・アカデミーのページに詳細情報があります。

データを使ってより良い意思決定を行っていきたいと言う方は、ぜひこの機会に参加をご検討ください！