Porządkowanie danych z użyciem keep
Od początku tego kursu korzystamy z wyników tygodniowego testu A/B.
Wyniki te zapisano w liście o nazwie all_visits. Lista zawiera visit_a, visit_b oraz visit_c. Wektory te nie mają nazw. Każdy z nich zawiera siedem liczb – po jednej na każdy dzień tygodnia.
Pierwsze pytanie, które chcemy zadać, brzmi: w które dni średnia liczba wizyt na godzinę przekroczyła 100? Do tego celu użyjemy funkcji keep(). Problem w tym, że bez nazw wynik byłby nieczytelny – widziałbyś liczby, ale nie wiedziałbyś, których dni dotyczą.
Dobre wieści: funkcja set_names() rozwiązuje ten problem. Właśnie to zrobimy w tym rozdziale – najpierw zastosujemy keep() na wektorach bez nazw, a potem na wektorach z nazwami.
To ćwiczenie jest częścią kursu
Funkcyjne programowanie średnio zaawansowane z purrr
Instrukcje do ćwiczenia
- Utwórz mapper, który sprawdzi, czy
.xjest większe niż 100. Użyjesz go dwukrotnie. - Łącząc ten mapper z funkcją
keep(), zastosuj go na liście bez nazwall_visit. Ponieważ wynik nie ma nazw, nie wiadomo, które dni zostały zachowane. - Nadaj nazwy każdemu wektorowi, łącząc funkcje
map()iset_names()oraz korzystając z dostarczonego wektora nazw. - Zastosuj wcześniej utworzony mapper na liście z nowymi nazwami. Jak widać, wynik jest teraz o wiele bardziej czytelny!
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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, ___))