「ifelse」関数を使って条件によって異なる結果を返す

条件によって異なる値を返すためにはifelseという関数が使えます。これは、基本的にExcelのifelseと同じです。

ちなみに、条件を複数持ちたい場合は、case_whenという関数が使えます。こちらのノートに詳細があります。

今回は、ifelseという関数について紹介します。

ifelse関数の基本

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

ifelse(条件, "条件に当てはまるときの結果", "条件が当てはまらないときの結果")

1つ目の引数は条件です。ここには、例えば、Sales > 500といった条件を指定することができます。2つ目の引数は、最初の条件の結果が当たっていれば、つまりTRUEだったら、返したい値を指定します。最後の3つ目の引数は、先ほどの条件が当たっていなかったら、つまりFALSEだったら返したい値を指定します。

それでは、以下の3つの例を使ってifelse関数の使い方を具体的に見ていきましょう。

売上が10万円以上かどうかで顧客ラベル付けする

例えば、以下のような顧客ごとの売上データがあったとします。

そこで売上が10万円以上の顧客を「Loyal Customer」とラベル付けする新しい列を作りたいとします。

列ヘッダメニューから計算を作成(Mutate)を開きます。

ダイアログが表示されるので、下記のコードを計算エディタに入力して実行します。

ifelse(Sales >= 100000, "Loyal Customer", "Customer")

ここでは、売上が10万円以上のカスタマーは「Loyal Customer」、そうでない場合は「Customer」となるように設定しています。

バーチャートで確認してみると、Loyal Customerの割合は約23%いることがわかります。

欠損値を他の値に置き換える

先ほどのデータを見ると、Countryの列に欠損値があることがわかりました。

サマリビューで確認してみると、欠損値が537行あるようです。

これらの欠損値を、Japanに置き換えたいとします。

その際に、欠損値かどうかを判別する際に役立つ、is.naという関数があります。 このis.naは欠損値の場合は、TRUE、欠損値ではない場合はFALSEを返します。

is.naifelseを組み合わせることにより、欠損値の場合に指定した値に置き換えることができます。

列ヘッダメニューから計算を作成(Mutate)を開きます。

下記のコードを計算エディタに入力します。

ifelse(is.na(Country), "Japan", Country)

また、今回は「既存列を上書き」を選んで、この「ifelse」関数の結果で「Country」列を上書きします。

「Country」列の値が欠損値かどうかをチェックし、TRUEの場合(欠損値の場合)は「Japan」を返し、そうでない場合はもとの「Country」列の値をそのまま返すようにしています。

サマリビューで確認してみると、欠損値がなくなり、Japanの数が増えていることがわかります。

%in%を使って、アジアという列をつくる

例えば、下記のようにJapanやChina、Thailandといった国に対して「Asia」というラベルを付けたいとします。

この場合も同様にifelseを使うのですが、演算子の" %in% "を使うことで、複数の値を指定することができます。

下記のコードを、計算エディタに入力して実行します。

ifelse(Country %in% c("Japan", "China", "South Korea", "Thailand"), "Asia", "Others")

%in%という演算子は複数の値のうちどれかと等しければ、という条件を作る時に使えます。もし、その逆に複数の値のうちのどれとも等しくなければ、という条件を作りたい場合は%nin%という演算子が使えます。ninはNot inの略となっています。

%in%の後に、Japan、China、South Korea、Thailandという複数の国名のリストを指定しているのですが、ここで注意しなくてはいけないのはc()という関数です。R言語では全てが関数であある必要があるので、ただのリストを作りたい場合でも、このように「c」という関数を使う必要があります。この「c」というのはConcatenate(くっつける)の「c」です。

このifelse関数を使った計算はCountry列の値が、Japan、China、South Korea、Thailandのいずれかだったら、「Asia」というラベルをつける、それ以外は「Others」というラベルをつけることになります。

アジアという列を作成し、JapanやChina、Thailandといった国の時はAsiaを、それ以外の場合はOthersを列の値に入れることができました。

自分で試してみる

まだExploratoryをお持ちでない方は、この機会にぜひ試してみて下さい!

こちらのページよりサインアップ(無料)した後、Exploratoryをダウンロードし始めることができます!

サインアップする


データサイエンスを学ぶ

データサイエンスやデータ分析の手法を1から体系的に学び、現場で使えるレベルのスキルを身につけていただくためのトレーニングを定期的に開催しています。

データを使ってビジネスの問題を解決していくための、質問や仮説の構築の仕方などを含めたデータリテラシーも基礎から身につけていただくものとなっております。

ぜひこの機会に参加をご検討ください!

詳細を見る