การกรองแถวข้อมูล
นอกจากการเลือกคอลัมน์แล้ว อีกวิธีหนึ่งในการดึงข้อมูลที่ต้องการออกจากชุดข้อมูลคือการกรองแถว ซึ่งทำได้โดยใช้ฟังก์ชัน filter() การใช้งาน filter() นั้น ให้ส่ง tibble พร้อมเงื่อนไขทางตรรกะเข้าไป ตัวอย่างเช่น หากต้องการดึงเฉพาะแถวที่ค่าของคอลัมน์ x มากกว่าศูนย์ และ ค่าของ y เท่ากับค่าของ z ให้ใช้โค้ดดังนี้
a_tibble %>%
filter(x > 0, y == z)
ก่อนลองทำแบบฝึกหัด ขอให้ระวังสองประเด็นสำคัญ ประการแรก อย่าสับสนระหว่างฟังก์ชัน filter() ของ dplyr กับฟังก์ชัน filter() ของแพ็กเกจ stats ประการที่สอง sparklyr จะแปลงโค้ด dplyr ของคุณเป็นโค้ด SQL ก่อนส่งไปยัง Spark ซึ่งหมายความว่ามีเพียงบางประเภทของการกรองเท่านั้นที่รองรับในขณะนี้ ตัวอย่างเช่น ไม่สามารถกรองแถวข้อความด้วย regular expression แบบนี้ได้
a_tibble %>%
filter(grepl("a regex", x))
หน้าช่วยเหลือของ translate_sql() อธิบายฟังก์ชันที่รองรับไว้อย่างครบถ้วน สามารถใช้ ตัวดำเนินการเปรียบเทียบ เช่น >, != และ %in% รวมถึง ตัวดำเนินการทางคณิตศาสตร์ เช่น +, ^ และ %% และ ตัวดำเนินการทางตรรกะ เช่น &, | และ ! ฟังก์ชันทางคณิตศาสตร์หลายตัวก็รองรับเช่นกัน เช่น log(), abs(), round() และ sin()
เช่นเดิม การอ้างอิงด้วย square bracket ยังไม่รองรับในขณะนี้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
มีการสร้าง Spark connection ไว้ให้แล้วในชื่อ spark_conn และมีการกำหนด tibble ที่เชื่อมต่อกับ metadata ของแทร็กที่จัดเก็บใน Spark ไว้ล่วงหน้าในชื่อ track_metadata_tbl
- เช่นเดียวกับแบบฝึกหัดก่อนหน้า ให้เลือกคอลัมน์
artist_name,release,titleและyearโดยใช้select() - จากนั้น pipe ผลลัพธ์ที่ได้ไปยัง
filter()เพื่อดึงแทร็กในยุค 1960
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# track_metadata_tbl has been pre-defined
glimpse(track_metadata_tbl)
# Manipulate the track metadata
track_metadata_tbl %>%
# Select columns
___ %>%
# Filter rows
___