最も多いアーティスト
distinct() 関数を使うと、ユニークな値を確認できます。さらに、各値が何件あるかを知ることも役立ちます。base R にはそのための table() 関数がありますが、tidyverse のすべてをティブルで管理するという設計思想に沿わないため、sparklyr では使用できません。代わりに count() を使いましょう。列名をクォートなしで渡すだけです。たとえば、列 x、y、z の組み合わせごとの件数を求めるには、次のように書きます。
a_tibble %>%
count(x, y, z)
この結果は以下と同じですが、
a_tibble %>%
distinct(x, y, z)
…件数を含む列 n が追加されている点が異なります。
count() の便利な使い方として、最も出現頻度の高い値を取得する方法があります。引数 sort = TRUE を指定して count() を呼び出すと、n 列の降順で行が並び替えられます。その後、slice_max() で上位何件かに絞り込めます。(slice_max() は base R の head() に似ていますが、Spark 上のリモートデータセットでも動作します。)たとえば、列 x、y、z の組み合わせで最も多い上位 20 件を取得するには、次のようにします。
a_tibble %>%
count(x, y, z, sort = TRUE) %>%
slice_max(20)
この演習はコースの一部です
sparklyr を使った Spark 入門(R)
演習の手順
Spark への接続は spark_conn として作成済みです。また、Spark に格納されたトラックのメタデータに紐付けられたティブルは track_metadata_tbl として定義されています。
track_metadata_tblのartist_name列の値を集計しましょう。sort = TRUEを渡して、行を人気の高い順に並べましょう。
slice_max()を使って、結果を上位 20 件に絞り込みましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Count the artist_name values
___ %>%
# Restrict to top 20
___