開始使用免費開始

篩選列

除了選取欄位之外,另一種擷取資料集重點的方法是篩選列。這可用 filter() 函式完成。使用 filter() 時,你需要傳入一個 tibble 與一些邏輯條件。例如,若只想保留欄位 x 的值大於 0,且 y 的值等於 z 的列,可以這樣寫:

a_tibble %>%
  filter(x > 0, y == z)

在開始練習前,請注意兩點警告。第一,不要把 dplyrfilter()stats 套件的 filter() 搞混。第二,sparklyr 會先把你的 dplyr 程式碼轉換成 SQL 資料庫語法,再交由 Spark 執行。這表示目前只支援有限的篩選操作。舉例來說,你不能用類似下列的正規表達式來篩選字串列:

a_tibble %>%
  filter(grepl("a regex", x))

translate_sql() 的說明頁面列出可用的功能。你可以安心使用比較運算子,如 >!=%in%算術運算子,如 +^%%;以及邏輯運算子,如 &|!。許多數學函式也受支援,例如 log()abs()round()sin()

同之前一樣,目前不支援方括號索引。

本練習屬於課程

使用 R 的 sparklyr:Spark 入門

檢視課程

練習說明

我們已替你建立一個 Spark 連線 spark_conn。連結到儲存在 Spark 中的曲目中繼資料的 tibble 已預先定義為 track_metadata_tbl

  • 和前一題一樣,使用 select() 選取 artist_namereleasetitleyear
  • 將結果以管線傳給 filter(),篩出 1960 年代的曲目。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# track_metadata_tbl has been pre-defined
glimpse(track_metadata_tbl)

# Manipulate the track metadata
track_metadata_tbl %>%
  # Select columns
  ___ %>%
  # Filter rows
  ___
編輯並執行程式碼