Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz mapper, który sprawdzi, czy .x jest większe niż 100. Użyjesz go dwukrotnie.
  • Łącząc ten mapper z funkcją keep(), zastosuj go na liście bez nazw all_visit. Ponieważ wynik nie ma nazw, nie wiadomo, które dni zostały zachowane.
  • Nadaj nazwy każdemu wektorowi, łącząc funkcje map() i set_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, ___))
Edytuj i uruchom kod