IF関数だけで、ダミー変数(0-1変数化)に一括変換!DL有
データ分析を行う際、カテゴリカル変数を数値化する必要がしばしばあります。
その一つの方法が、ダミー変数(0-1変数化)です。
このダミーコード化により、数値計算が可能になり、
データ分析や機械学習のアルゴリズムに適用できるようになります。
しかし、Excelでこの変換を行う方法は一見すると難しそうですよね。
なんと、IF関数で可能なのです
しかも、一括でダミーコード化する方法をお伝えします。
一括でダミー変数を作成する方法
例示
以下のサンプルデータを使って説明します。
まず、空白セルのないサンプルデータです。
空白セルのあるデータの場合は、ひと手間あります。
「空白セルがあると、IF関数は0を返す」というExcel固有の問題があるためです。
そちらに関しても、後日取り上げる予定です。
解答
このデータをダミーコード化するためには、ExcelのIF関数を使います。
例えば、「部署」の列をダミーコード化する場合、以下のような式を使います。
E2セルに以下の関数式を入力し、列方向にコピーすると、
各部署のデータが、一括でダミー変数が作成されます。
=IF($C2=E$1, 1, 0)
この関数式は、
「C2セル(従業員の部署)がE1セル(部署名)と一致する場合は1を、そうでない場合は0を返す」
というものです。
これにより、各部署ごとに新しい列が作成され、
その部署の従業員は1、
それ以外は0と表示されます。
E1~G1セルに予め項目名(部署名)を入力しておくことがポイントです。
(こちらの入力も自動化することもできますが、割愛します)
相対参照を設定し、関数式をコピーすることによって、
項目ごとにIF式を構築する手間が省かれています。
項目ごとにIF式を構築する方法、別解で紹介します。
別解
別解としては、以下もあります。
E2セルに以下の関数式を入力し、行方向にコピーする
=IF($C2=“営業”, 1, 0)
F2セルに以下の関数式を入力し、行方向にコピーする
=IF($C2=“マーケティング”, 1, 0)
G2セルに以下の関数式を入力し、行方向にコピーする
=IF($C2=“エンジニアリング”, 1, 0)
一括変換しない方法に関して
=IF($C2=”営業”,1,0)
=IF($C2=”マーケティング”,1,0)
=IF($C2=”エンジニアリング”,1,0)
項目が多いと、ミスしやすい
=IF($C2=E$1,1,0)
の方がシンプルです
解答付きサンプルデータ
解答付きサンプルデータが欲しい方は、下記からダウンロードしてください。
フォローアップ
ダブルクォーテーション
文字列は、半角のダブルクォーテーション(“)で囲みます。
なので、
”スポーツ”と”スポーツ以外”となっているわけです。
最後に
カテゴリカル変数をダミー変数(0-1変数化)を作成する方法を学びました。
カテゴリカル変数をダミー変数化すると、数値計算が可能になり、
データ分析や機械学習のアルゴリズムに適用できるようになります。
IF関数、たった一つで、実現できました。
これは、データ分析の幅を広げる大きな一歩となります。
空白セルのあるデータの場合は、ひと手間あります。
「空白セルがあると、IF関数は0を返す」というExcel固有の問題があるためです。
そちらに関しても、後日取り上げる予定です。
参考記事:
Excel関数を操作するための基本概念です。基本概念を理解すると、各関数の理解がより深まります。
構文に関する記事
Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。
ダイアログボックスの使い方に関する記事
Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。
参照形式に関する記事
関数式をコピーする時はどうしたらいい? $マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。