การ mutate แบบรายกลุ่ม
นอกจากการคำนวณสถิติสรุปแบบรายกลุ่มแล้ว ยังสามารถใช้ mutate() เพื่อเพิ่มคอลัมน์ที่มีค่าเฉพาะของแต่ละกลุ่มได้ด้วย ตัวอย่างเช่น เทคนิคหนึ่งในการ normalize ค่าคือการลบค่าเฉลี่ยแล้วหารด้วยค่าเบี่ยงเบนมาตรฐาน ซึ่งสามารถทำ normalization แบบรายกลุ่มได้ด้วยโค้ดต่อไปนี้
a_tibble %>%
group_by(grp1, grp2) %>%
mutate(normalized_x = (x - mean(x)) / sd(x))
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
Spark connection ถูกสร้างไว้ให้แล้วในชื่อ spark_conn และ tibble ที่เชื่อมต่อกับ track metadata ที่เก็บอยู่ใน Spark ถูกกำหนดไว้ล่วงหน้าเป็น track_metadata_tbl
- จัดกลุ่มข้อมูลใน
track_metadataตามartist_name - เพิ่มคอลัมน์ใหม่ชื่อ
time_since_first_release- กำหนดให้เท่ากับ
yearของกลุ่มนั้น ลบด้วยyearแรกสุด (นั่นคือmin()ของyear) ที่ศิลปินเคยปล่อยเพลง
- กำหนดให้เท่ากับ
- เรียงลำดับแถวตาม
time_since_first_releaseจากมากไปน้อย
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# track_metadata_tbl has been pre-defined
track_metadata_tbl
track_metadata_tbl %>%
# Group by artist
___ %>%
# Calc time since first release
___ %>%
# Arrange by descending time since first release
___