ศิลปินยอดนิยม
ฟังก์ชัน distinct() ช่วยให้เห็นค่าที่ไม่ซ้ำกัน แต่บางครั้งก็อยากรู้ด้วยว่าแต่ละค่ามีจำนวน เท่าไร ฟังก์ชันพื้นฐานของ R สำหรับงานนี้คือ table() แต่ sparklyr ไม่รองรับฟังก์ชันนี้ เนื่องจากไม่สอดคล้องกับแนวทางของ tidyverse ที่เก็บข้อมูลทุกอย่างไว้ใน tibble แทนที่จะใช้ table() ให้ใช้ count() แทน โดยส่งชื่อคอลัมน์แบบไม่ต้องใส่เครื่องหมายคำพูด ตัวอย่างเช่น หากต้องการนับจำนวนของชุดค่าผสมที่ไม่ซ้ำกันของคอลัมน์ x, y และ z ให้พิมพ์ดังนี้
a_tibble %>%
count(x, y, z)
ผลลัพธ์จะคล้ายกับ
a_tibble %>%
distinct(x, y, z)
… แต่จะมีคอลัมน์เพิ่มขึ้นมาหนึ่งคอลัมน์ คือ n ซึ่งเก็บจำนวนนับไว้
การใช้งาน count() ที่มีประโยชน์มากคือการหาค่าที่พบบ่อยที่สุด โดยเรียกใช้ count() พร้อมอาร์กิวเมนต์ sort = TRUE ซึ่งจะเรียงแถวตามค่าในคอลัมน์ n จากมากไปน้อย จากนั้นใช้ slice_max() เพื่อจำกัดผลลัพธ์ให้เหลือเฉพาะอันดับต้น ๆ ตามจำนวนที่ต้องการ (slice_max() ทำงานคล้ายกับ head() ของ R พื้นฐาน แต่รองรับชุดข้อมูลระยะไกล เช่น ข้อมูลใน Spark) ตัวอย่างเช่น หากต้องการดู 20 อันดับแรกของชุดค่าผสมที่พบบ่อยที่สุดของคอลัมน์ x, y และ z ให้ใช้คำสั่งต่อไปนี้
a_tibble %>%
count(x, y, z, sort = TRUE) %>%
slice_max(20)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
มีการสร้าง Spark connection ไว้ให้แล้วในชื่อ spark_conn และกำหนด tibble ที่เชื่อมต่อกับเมทาดาทาของแทร็กที่เก็บอยู่ใน Spark ไว้ล่วงหน้าในชื่อ track_metadata_tbl
- นับค่าในคอลัมน์
artist_nameจากtrack_metadata_tbl- ส่ง
sort = TRUEเพื่อเรียงแถวตามความนิยมจากมากไปน้อย
- ส่ง
- จำกัดผลลัพธ์ให้เหลือเพียง 20 อันดับแรกโดยใช้
slice_max()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Count the artist_name values
___ %>%
# Restrict to top 20
___