เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ทำความสะอาดข้อมูลด้วย keep

ตลอดคอร์สนี้ เราใช้ผลลัพธ์จากการทดสอบ A/B ที่ดำเนินการเป็นเวลาหนึ่งสัปดาห์

ผลลัพธ์เหล่านี้ถูกเก็บไว้ในลิสต์ชื่อ all_visits ซึ่งประกอบด้วย visit_a, visit_b และ visit_c เวกเตอร์เหล่านี้ยังไม่มีชื่อกำกับ แต่ละตัวมีตัวเลข 7 ค่า ตรงกับจำนวนวันในหนึ่งสัปดาห์

คำถามแรกที่เราต้องการตอบคือ: วันใดบ้างที่มีจำนวนการเข้าชมเฉลี่ยมากกว่า 100 ครั้งต่อชั่วโมง? เราจะใช้ฟังก์ชัน keep() ในการนี้ แต่หากเวกเตอร์ยังไม่มีชื่อ ผลลัพธ์ที่ได้จะอ่านยาก เพราะมีแต่ตัวเลขโดยไม่รู้ว่าแต่ละค่าสอดคล้องกับวันไหน

ข่าวดีคือ สามารถใช้ฟังก์ชัน set_names() เพื่อแก้ปัญหานี้ได้ ในบทนี้เราจะทำสองขั้นตอน ได้แก่ ใช้ keep() กับเวกเตอร์ที่ยังไม่มีชื่อก่อน แล้วจึงทดลองกับเวกเตอร์ที่มีชื่อกำกับแล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Functional Programming ระดับกลางด้วย purrr

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง mapper สำหรับทดสอบว่า .x มีค่ามากกว่า 100 หรือไม่ เราจะใช้ mapper นี้สองครั้ง
  • นำ mapper นี้มาใช้ร่วมกับ keep() แล้ว map ลงบนลิสต์ all_visit ที่ยังไม่มีชื่อ สังเกตว่าผลลัพธ์ที่ได้ยังบอกไม่ได้ว่าวันใดถูกคัดเลือกไว้
  • กำหนดชื่อให้แต่ละเวกเตอร์โดยใช้ map() ร่วมกับฟังก์ชัน set_names() พร้อมเวกเตอร์ชื่อที่เราได้เตรียมไว้ให้
  • นำ mapper ที่สร้างไว้มา map บนลิสต์ที่มีชื่อแล้ว จะเห็นว่าผลลัพธ์อ่านง่ายขึ้นมาก!

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Create a mapper that test if .x is more than 100 
is_more_than_hundred <- ___(~ .x > 100)

# Use this mapper with keep() on the all_visits object 
map(all_visits, ~ ___(.x, is_more_than_hundred))

# Use the  day vector to set names to all_list
day <- c("mon", "tue", "wed", "thu", "fri", "sat", "sun")
full_visits_named <- map(all_visits, ~ ___(.x, ___))

# Use this mapper with keep() 
map(full_visits_named, ~ ___(.x, ___))
แก้ไขและรันโค้ด