行のフィルタリング
列を選択するだけでなく、データセットから必要なデータを抽出するもう一つの方法が、行のフィルタリングです。これには filter() 関数を使います。filter() には、tibble といくつかの論理条件を渡します。たとえば、列 x の値が0より大きく、かつ y の値が z の値と等しい行だけを返すには、次のように記述します。
a_tibble %>%
filter(x > 0, y == z)
演習に取り組む前に、2つの注意点を確認しておきましょう。1つ目は、dplyr の filter() 関数と、stats パッケージの filter() 関数を混同しないようにすることです。2つ目は、sparklyr が dplyr のコードを Spark に渡す前に SQL のデータベースコードへ変換するという点です。そのため、現在サポートされているフィルタリング操作には限りがあります。たとえば、以下のように正規表現を使って文字列行をフィルタリングすることはできません。
a_tibble %>%
filter(grepl("a regex", x))
利用可能な機能の詳細は、translate_sql() のヘルプページをご覧ください。>、!=、%in% などの比較演算子、+、^、%% などの算術演算子、&、|、! などの論理演算子は使用できます。また、log()、abs()、round()、sin() などの多くの数学関数もサポートされています。
なお、前の演習と同様に、現時点では角括弧によるインデックス参照は使用できません。
この演習はコースの一部です
sparklyr を使った Spark 入門(R)
演習の手順
Spark への接続は spark_conn としてあらかじめ作成されています。Spark に格納されたトラックのメタデータに紐づく tibble は track_metadata_tbl として事前に定義されています。
- 前の演習と同様に、
select()を使ってartist_name、release、title、yearを選択しましょう。 - その結果を
filter()にパイプで渡し、1960年代のトラックだけを取得しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# track_metadata_tbl has been pre-defined
glimpse(track_metadata_tbl)
# Manipulate the track metadata
track_metadata_tbl %>%
# Select columns
___ %>%
# Filter rows
___