Goodな生活

INTP型コンサルタントが好奇心の受け皿を探す

【R】特定の文字の含有有無によるダミー変数の作成[paste][str_detect]

f:id:good_na_life:20210524102921p:plain

アンケートの自由記述欄などの文字列のデータに対して、特定の文字列を含むかどうかでダミー変数を作成する場合のコード。例えば頻出語句やキーワードなどをあらかじめ指定しておけば、アンケート回答者の属性にとって頻出傾向の違い等を分析することができる。

Rのデフォルトデータセットの中に文字列のデータが見当たらなかったため、「dataset」という架空のデータセットを想定する。「dataset」の中の「var1」を文字列を含む変数とする。「var1」に特定の文字列(AA,BB,CC)が含まれる場合に1を、含まれない場合に0をとる「AA_dummy」というダミー変数を作成する。

> list <- list("AA","BB","CC")
> for(i in list)
>  {dataset[paste(i,"dummy",sep="_")] <- ifelse(str_detect(dataset$var1, pattern = i)== TRUE,1,0)}

「var1」以外の変数についても同様の集計を行うことで、変数間の特定の文字列の頻出度合いを比べることができる。また、他の変数でグループ化(分類化)を行い、グループによって頻出度合いが異なるかどうかを比べることもできる。

以下よく分かっていない点

  • apply関数を使えばfor文を書かなくても同じ操作ができるのではないか
  • (そもそも)記述データを定量的に集計する何か体系的な方法はあったりするのか(テキストマイニングの話か?)