Dọn sạch dữ liệu với keep
Từ đầu khóa học đến giờ, chúng ta dùng kết quả của một thử nghiệm A/B kéo dài một tuần.
Chúng tôi đã đưa các kết quả này vào một list tên là all_visits. List này chứa visit_a, visit_b và visit_c. Các vector này chưa có tên. Mỗi vector có bảy số, tương ứng với bảy ngày trong tuần.
Câu hỏi đầu tiên: ngày nào có số lượt truy cập trung bình hơn 100 mỗi giờ? Chúng ta sẽ dùng hàm keep(). Nhưng nếu vector không có tên thì kết quả sẽ khó đọc: bạn có số liệu, nhưng không biết con số nào ứng với ngày nào.
Tin tốt là bạn có thể dùng hàm set_names() để giải quyết. Đây là những gì ta sẽ làm trong chương này: đầu tiên dùng keep() trên các vector chưa có tên, sau đó dùng trên các vector đã được đặt tên.
Bài tập này là một phần của khóa học
Lập trình hàm nâng cao với purrr
Hướng dẫn bài tập
- Tạo một mapper kiểm tra xem
.xcó lớn hơn 100 không. Bạn sẽ dùng nó hai lần. - Kết hợp mapper này với
keep()và áp dụng (map) nó lên list chưa có tênall_visit. Vì kết quả không có tên, bạn sẽ không biết mình đã giữ ngày nào. - Đặt tên cho từng vector bằng cách kết hợp
map()vàset_names(), dùng vector tên mà chúng tôi đã cung cấp. - Map mapper vừa tạo lên list mới đã có tên. Như bạn thấy, giờ đã dễ đọc hơn nhiều!
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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, ___))