1. 学ぶ
  2. /
  3. コース
  4. /
  5. sparklyr を使った Spark 入門(R)

Connected

演習

連続変数をカテゴリ変数に変換する(2)

前のセクションで学んだ変換の特殊なケースとして、変数の分位点を使ってバケットを定義し、連続変数を区間に分割する方法があります。この変換は、アンケートの回答やレビューのスコアを分析する際によく使われます。たとえば、1〜5つ星で評価してもらった場合、中央値が必ずしも3つ星にならないことがあります。そのような場合、スコアを分位点ごとに分割すると便利です。たとえば、0、20、40、60、80、100パーセンタイルで分割して、5つの五分位グループを作ることができます。

base R でこれを行うには cut() と quantile() を組み合わせます。sparklyr では ft_quantile_discretizer() という変換関数を使います。この関数は num_buckets 引数を受け取り、バケットの数を指定します。base R と sparklyr の両方の方法を並べて示します。前のセクションと同様に、right = FALSE および include.lowest が設定されています。

survey_response_group <- cut(
  survey_score,
  breaks = quantile(survey_score, c(0, 0.25, 0.5, 0.75, 1)),
  labels = c("hate it", "dislike it", "like it", "love it"),
  right  = FALSE,
  include.lowest = TRUE
)
survey_data %>%
  ft_quantile_discretizer("survey_score", "survey_response_group", num_buckets = 4)

ft_bucketizer() と同様に、結果として得られるビンはゼロから始まる数値で表されます。R でそのまま扱いたい場合は、明示的に factor 型に変換してください。

指示

100 XP

Spark への接続は spark_conn として作成済みです。Spark に格納されたトラックのメタデータに関連付けられたtibbleは track_metadata_tbl として事前に定義されています。duration_labels は楽曲の長さを表す文字ベクトルです。

  • track_metadata_tbl から familiarity_by_duration という変数を作成します。
    • duration フィールドと artist_familiarity フィールドを選択します。
    • ft_quantile_discretizer() を使って、duration を5つの分位ビンに分割した新しいフィールド duration_bin を作成します。
    • 結果を収集します。
    • duration_bin フィールドをラベル duration_labels を持つ因子型に変換します。
  • artist_familiarity を duration_bin ごとに表示する ggplot() の箱ひげ図を描きます。
    • ggplot() の第1引数には、データ引数として familiarity_by_duration を指定します。
    • ggplot() の第2引数には、aes() に duration_bin と artist_familiarity を渡した審美的マッピングを指定します。
    • geom_boxplot() を追加して箱ひげ図を描画します。