library(dplyr)

Najważniejsze informacje:

Najważniejsze funkcje:

Działają też rozmaite inne funkcje, które już poznaliśmy, np.:

…i masa innych.

Ściąga: https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf

Przykłady:

Daj tylko kolumny Species i Sepal.Length z tabeli iris.

iris %>%
  select("Species", "Sepal.Length")

Daj tylko wiersze, w których Petal.Width jest większe niż dwa, i policz ile tak wyfiltrowane dane mają wierszy.

iris %>%
  filter(Petal.Width > 2) %>%
  nrow()
## Warning: package 'bindrcpp' was built under R version 3.4.4
## [1] 23

Daj tylko te kwiaty, które mają Sepal.Width mniejsze niż 4 i nie są setosą. Ułóż je wg Petal.Length. Wyświetl tylko kilka pierwszych wierszy.

iris %>%
  filter(Sepal.Width < 4 & Species != "setosa") %>%
  arrange(Petal.Length) %>%
  head()

Policz, w ilu gatunkach (nie osobnikach!) zdarza się, że jakikolwiek kwiatek ma Sepal.Length mniejsze niż 4.5.

iris %>%
  filter(Sepal.Length < 4.5) %>%
  select(Species) %>%
  unique() %>%
  nrow()
## [1] 1

Dodaj kolumnę z pomnożonymi długością i szerokością płatka. Zapisz nową macierz na nową zmienną.

iris %>%
  mutate(iloczyn = Petal.Length * Petal.Width) -> nowe_irysy

# lub:

nowe_irysy <- iris %>%
  mutate(iloczyn = Petal.Length * Petal.Width)

Wybierz tylko kwiaty virginica i zbuduj z nich model liniowy, który przewidzi długość płatków na podstawie ich szerokości.

iris %>%
  filter(Species == "virginica") %>%
  lm(formula = Petal.Length ~ Petal.Width)
## 
## Call:
## lm(formula = Petal.Length ~ Petal.Width, data = .)
## 
## Coefficients:
## (Intercept)  Petal.Width  
##      4.2407       0.6473
# przekazane dane beda teraz wziete jako pierwszy nienazwany argument funkcji lm
# czyli data

Bardziej zaawansowane

Policz, ile jest kwiatów poszczególnych gatunków.

iris %>%
  group_by(Species) %>%
  summarize(ile = n())

Policz średnią szerokość i długość płatka dla każdego z gatunków. Dodaj kolumnę z iloczynem tych dwóch wartości. Wybierz tylko wersy, dla których ten iloczyn jest różny od 13 lub gatunek jest równy “virginica”.

iris %>%
  group_by(Species) %>%
  mutate(srednia.dlugosc = mean(Petal.Length),
            srednia.szerokosc = mean(Petal.Width)) %>%
  mutate(iloczyn = srednia.dlugosc * srednia.szerokosc) %>%
  filter(iloczyn != 13 | Species == "virginica") %>%
  head()