今回は「抽出」コマンドの使い方を紹介していこう。このコマンドを使うと、既存のデータから“指定した部分”だけを抜き出すことが可能となる。第14回の連載で紹介した「列の分割」と似ている部分も多いので、あわせて覚えておくと、より柔軟にパワークエリを活用できるようになるだろう。
文字列の一部を抜き出して「新しい列」を作成
今回は「抽出」というコマンドの使い方を紹介していこう。「列の分割」が“指定した位置で列を分割する機能”であるのに対して、「抽出」は“指定した部分だけを抜き出す機能”と考えると理解しやすいだろう。
具体的な例で見ていこう。以下の図は、「Source.Name」(ファイル名)のデータから「X月X日」の部分だけを抽出した例だ。このように“既存の列”から“必要な部分”だけを抜き出したいときに活用できる機能が「抽出」となる。
ちなみに、「抽出」コマンドは「変換」タブと「列の追加」タブの両方に用意されている。パワークエリを上手に活用していくには、両者の違いについても理解しておく必要がある。
「区切り記号」を指定してデータを抽出する
それでは、「抽出」コマンドの具体的な使い方を紹介していこう。まずは、特定の文字を「区切り記号」に指定してデータを抽出する方法だ。
データの抽出元となる列を選択し、「列の追加」タブを選択する。続いて、「抽出」コマンドをクリックして抽出方法を選択する。「区切り記号」を基準にデータを抽出するときは、以下の図に示した3項目の中から抽出方法を選択すればよい。
ここでは「区切り記号の前のテキスト」を選択した場合を例に操作手順を紹介していこう。抽出方法を選択すると、「区切り記号」を指定する画面が表示される。今回は「X月X日」の部分だけを抽出したいので、「の」より前のデータを抽出すればよい。よって、「の」と入力して「OK」ボタンをクリックする。
このとき、区切り記号に“複数の文字”を指定することも可能だ。今回の例の場合、区切り記号に「の売上」を指定しても同様の結果を得ることができる。
「OK」ボタンをクリックして処理を実行すると、データ表の右端に「新しい列」が追加され、そこに“抽出したデータ”が表示される。
以上が「抽出」コマンドの基本的な使い方となる。難しい話は特にないので、すぐに使い方を覚えられるだろう。
ただし、抽出したデータは「テキスト型」のデータとして扱われることに注意しなければならない。抽出したデータを日付データとして扱いたい場合などは、自分でデータ型を指定しなおす必要がある。
前述した例とは逆に、“特定の文字”より後にある文字だけを抽出することも可能だ。この場合は、抽出方法に「区切り記号の後のテキスト」を選択して操作を進めていけばよい。
抽出方法に「区切り記号の間のテキスト」を選択した場合は、以下の図のように2つの「区切り記号」を指定する設定画面が表示される。
たとえば、「4月」と「の売上」を区切り記号に指定すると、「4月」と「の売上」の間にある文字だけを抽出することが可能となる。結果として、「X日」の部分だけを「新しい列」に抽出できることになる。
「文字数」を指定してデータを抽出する
“特定の文字”ではなく、“文字数”を基準にデータを抽出する方法も用意されている。この場合は、以下の図に示した3項目の中から抽出方法を選択すればよい。
ここでは、「住所」の列から「都道府県」だけを抜き出す場合を例に操作手順を解説していこう。“先頭からN文字”のデータを抽出するときは「最初の文字」を選択し、抽出方法の設定画面で「文字数」を指定すればよい。今回の例では「3」を指定して、「OK」ボタンをクリックする。
すると、「先頭から3文字」を抽出したデータで「新しい列」を追加することができる。
以降の操作手順は、第15回の連載で紹介した内容と同じだ。「値の置換」コマンドを使って、県名が4文字になる都道府県に「県」の文字を追加してあげればよい。具体的には、「神奈川」→「神奈川県」、「和歌山」→「和歌山県」、「鹿児島」→「鹿児島県」といった3つの置換を行えばよい。
同様に、データの“末尾からN文字”を抽出することも可能だ。この場合は、抽出方法に「最後の文字」を選択し、抽出する「文字数」を指定する。
抽出方法に「範囲」を指定した場合は、「先頭のN文字を除いてM文字分」のデータを抽出できるようになる。たとえば、「先頭の3文字を除いて50文字分」のデータを抽出するときは、以下の図のように数値を入力すればよい。
すると、「4文字目から50文字分」を抽出したデータで「新しい列」を追加することができる。抽出するデータが50文字に満たない場合は、「4文字目から最後まで」のデータが抽出されることになる。
この抽出結果は、その大半が「都道府県以降の住所」になる。ただし、県名が4文字になる住所は、最初に「県」の文字が残ってしまう。この「県」の文字を削除すると、全データを「都道府県以降の住所」として扱えるようになる。
先頭にある「県」を削除する手順は第15回の連載で詳しく解説しているので、よく分からない方はあわせて参照しておくとよいだろう。これで、以下の図のような結果を得ることができる。
このように、「抽出」コマンドを使って「住所」から「都道府県」や「それ以降の住所」だけを抜き出す方法もある。関数を使用する方法よりも「手軽で理解しやすい」と感じる方が多いのではないだろうか? 文字列データを処理するときの参考にして頂ければ幸いだ。
「変換」タブにある「抽出」コマンド
これまでは「列の追加」タブにある「抽出」コマンドの使い方を解説してきたが、「変換」タブにも「抽出」コマンドが用意されている。続いては、「列の追加」タブと「変換」タブの違いについて補足しておこう。
「変換」タブにある「抽出」コマンドも基本的に同じ操作手順で使用できる。ここでは、抽出方法に「最初の文字」を選択し、「先頭から3文字」のデータを抜き出した例を紹介しておこう。
「変換」タブの場合は、「新しい列」が追加されるのではなく、抽出元の列が「抽出後のデータ」に置き換わる仕組みになっている。上図の場合、「住所」のデータが「最初の3文字」のデータに置き換えられることになる。
データ表を加工する目的が「都道府県で分類すること」であった場合、「都道府県」のデータを抽出できたら「住所」の列は不要になるはずだ。これを「列の追加」タブにある「抽出」コマンドで処理すると、
(1)「住所」の列から「都道府県」のデータを抽出する(新しい列が作成される)
(2)作成された列の列名を「都道府県」などに変更する
(3)神奈川、和歌山、鹿児島のデータに「県」の文字を追加する
(4)列の並び順を変更する
(5)「住所」の列を削除する
といった手順を踏まなければならない。一方、「変換」タブにある「抽出」タブを使った場合は、(4)と(5)の手順を省略することが可能となり、より少ない工数で処理を完了できるようになる。
このように、「変換」タブを使用した方が少ない工数で処理を完了できるケースも少なくない。目的や状況に応じて「変換」タブと「列の追加」タブを使い分けられるように、両者の違いをよく理解しておく必要があるだろう。
「抽出」コマンドで文字数をカウントする
最後に、抽出方法に「長さ」を選択したときの動作を紹介しておこう。この場合は“データの抽出”ではなく、“文字数のカウント”が行われる仕組みになっている。
上図のように操作した場合、「氏名」の列にあるデータの“文字数”をカウントした結果が抽出される。結果を比較しやすいように、「抽出元の列」を「抽出後の列」の並べて配置した例を紹介しておこう。
今回の例では、姓と名の間に「半角スペース」が挿入されている。この場合、「半角スペース」も1文字としてカウントされる。よって、「清水 浩樹」は5文字、「荒川 俊」は4文字、……という結果になる。「長さ」の列には、これらの数値が「整数型」のデータとして抽出される。
このように、「長さ」はデータを抽出する機能ではなく、スペースを含む“文字数”をカウントする機能となる。なぜ「抽出」コマンドに含まれているのかは不明であるが、文字数をカウントしたい場合に便利に活用できるので、この機会にあわせて覚えておくとよいだろう。