開始使用免費開始

Common people

distinct() 會顯示欄位中的不重複值。不過,知道每個值「各有多少」也很實用。base R 的做法是用 table();但 sparklyr 不支援它,因為它不符合 tidyverse 將所有東西都保留為 tibble 的理念。相對地,你需要使用 count()。使用方式是直接傳入未加引號的欄位名稱。舉例來說,若要計算欄位 xyz 不同組合各自的出現次數,可以這樣寫:

a_tibble %>%
  count(x, y, z)

其結果等同於:

a_tibble %>%
  distinct(x, y, z)

……只是多了一個名為 n 的欄位,裡面放的是次數。

count() 的一個很好用的情境,是找出最常見的值。作法是先呼叫 count(),並加入引數 sort = TRUE,讓資料列依 n 欄位由大到小排序,接著用 slice_max() 將結果限制在前幾名。(slice_max() 類似 base R 的 head(),但它能處理像 Spark 這樣的遠端資料集。)例如,若要取得欄位 xyz 組合中最常見的前 20 名,可以這樣寫:

a_tibble %>%
  count(x, y, z, sort = TRUE) %>%
  slice_max(20)

本練習屬於課程

使用 R 的 sparklyr:Spark 入門

檢視課程

練習說明

已為你建立名為 spark_conn 的 Spark 連線。已預先定義 track_metadata_tbl,它是連到 Spark 中曲目中繼資料的 tibble。

  • track_metadata_tblartist_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
  ___
編輯並執行程式碼