IF関数だけで、ダミー変数(0-1変数化)に一括変換!DL有

IF関数だけで、ダミー変数(0-1変数化)に一括変換!DL有

データ分析を行う際、カテゴリカル変数を数値化する必要がしばしばあります。

その一つの方法が、ダミー変数(0-1変数化)です。

このダミーコード化により、数値計算が可能になり、
データ分析や機械学習のアルゴリズムに適用できるようになります。

しかし、Excelでこの変換を行う方法は一見すると難しそうですよね。

なんと、IF関数で可能なのです

しかも、一括でダミーコード化する方法をお伝えします。

一括でダミー変数を作成する方法

例示

以下のサンプルデータを使って説明します。

まず、空白セルのないサンプルデータです。

空白セルのあるデータの場合は、ひと手間あります。

空白セルがあると、IF関数は0を返す」というExcel固有の問題があるためです。

そちらに関しても、後日取り上げる予定です。

カテゴリカル変数のダミー変数化


解答

IF関数だけで、ダミーコード化(0-1変数化)に一括変換!DL可

このデータをダミーコード化するためには、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)

項目ごとに、式を作成するパターンです。

項目名が多いと、大変ですね。

1つ目の解答の =IF($C2=E$1,1,0)の方がシンプルで、

エラーが少なく、一括でダミー変数が作成できます

解答付きサンプルデータ

解答付きサンプルデータが欲しい方は、下記からダウンロードしてください。

フォローアップ

ダブルクォーテーション

文字列は、半角のダブルクォーテーション(“)で囲みます。

なので、

”スポーツ”と”スポーツ以外”となっているわけです。

最後に

カテゴリカル変数をダミー変数(0-1変数化)を作成する方法を学びました。

カテゴリカル変数をダミー変数化すると、数値計算が可能になり、
データ分析や機械学習のアルゴリズムに適用できるようになります。

IF関数、たった一つで、実現できました。

これは、データ分析の幅を広げる大きな一歩となります。

空白セルのあるデータの場合は、ひと手間あります。


「空白セルがあると、IF関数は0を返す」というExcel固有の問題があるためです。


そちらに関しても、後日取り上げる予定です。


参考記事

Excel関数を操作するための基本概念です。基本概念を理解すると、各関数の理解がより深まります。

構文に関する記事

Excel関数の引数と戻り値は何だっけ?という時に、役立つ記事です。

ダイアログボックスの使い方に関する記事

Excel関数名は何だっけ?VLOOKUP関数の使い方は何だっけ?という時に、ダイアログボックスを使うと便利です。
下記はそのダイアログボックスに関する記事です。

参照形式に関する記事

関数式をコピーする時はどうしたらいい? $マークは、どう付けたらいいだろう?
といった悩みをお持ちの方は以下をご覧ください。