P8. ターゲットリストを使ったフラグ変数の作成

 

2つのデータフレームを結合するleft_joinなどを学ぶ前に、よりシンプルな「情報の接続」方法を紹介します。

例えば、e-Statなどの外部データから「出生率が低い都道府県のリスト」を入手します。
このリストを使って、手元にあるデータセット(naiman_x)に、
「この回答者は、出生率が低い都道府県に住んでいるか?」という目印(フラグ)を付けたい、という状況を考えます。

今回は、%in%演算子とif_else()関数を組み合わせる方法を紹介します。

ステップ1:ターゲットリストを作成する

まず、目印(フラグ)を付けたい対象のリストを、ベクトル(c()で作成するオブジェクト)で定義します。
このリストは、エクセルからコピペしたり、別の分析結果から持ってきたり、様々な方法で作成できます。

target_values_br <- c(13, 1, 4, 5, 27, 40)

※ 都道府県コードからフラグを立てる想定です。

ステップ2:%in%if_elseでフラグ変数を作成する

mutate()で、if_else()%in%を使い、q41(回答者の居住都道府県コード)がターゲットリストに含まれているかどうかに基づいて、新しい変数brl(Birth Rate Lowの略)を作成します。

naiman_brl <- naiman_x %>%
mutate( brl =
if_else( q41 %in% target_values_br, 1, 0 ) )

日本語訳:naiman_xのデータを元にして、ちょいと加工したnaiman_brlっちゅう新しいデータセットを作ってくれへんか。
やってほしいことは
q41の列にあるコードが、前に作ったターゲットリスト (target_values_br) に含まれるか(%in%)を判断してほしいねん。
仲間やったら1を、仲間やなかったら0を入力した、brlちゅう新しい列を付けておいてほしいねん。

ifelse(q41 %in% target_values_br, 1, 0)の解説
  • %in%演算子:「~の仲間かどうか?」を判定
    %in%は、左側にあるq41の各値が、右側にあるtarget_values_brというベクトルの中に含まれているか(=仲間かどうか)を、一行ずつ判定していきます。
    結果として、TRUE(仲間である)またはFALSE(仲間ではない)の論理値ベクトルが返されます。
  • if_else()関数:「もし仲間なら1、でなければ0」を割り当てるif_else()は、%in%が返したTRUE/FALSEの結果を受け取ります。
    • もし結果がTRUEなら、1を返します。(仲間だったら、第2引数を返す)
    • もし結果がFALSEなら、0を返します。(仲間でなければ、第3引数を返す)

この組み合わせは、特定の条件に合致するか否かでダミー変数(0/1変数)を作成する際の、鉄板のパターンです。

 

前の記事

P7. データセットを吐き出す

次の記事

「様々な差の検定」新着!!