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")
ABCDEFGHIJ0123456789
Species
<fctr>
Sepal.Length
<dbl>
setosa5.1
setosa4.9
setosa4.7
setosa4.6
setosa5.0
setosa5.4
setosa4.6
setosa5.0
setosa4.4
setosa4.9

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()
ABCDEFGHIJ0123456789
 
 
Sepal.Length
<dbl>
Sepal.Width
<dbl>
Petal.Length
<dbl>
Petal.Width
<dbl>
Species
<fctr>
15.12.53.01.1versicolor
24.92.43.31.0versicolor
35.02.33.31.0versicolor
45.02.03.51.0versicolor
55.72.63.51.0versicolor
65.62.93.61.3versicolor

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())
ABCDEFGHIJ0123456789
Species
<fctr>
ile
<int>
setosa50
versicolor50
virginica50

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()
ABCDEFGHIJ0123456789
Sepal.Length
<dbl>
Sepal.Width
<dbl>
Petal.Length
<dbl>
Petal.Width
<dbl>
Species
<fctr>
srednia.dlugosc
<dbl>
5.13.51.40.2setosa1.462
4.93.01.40.2setosa1.462
4.73.21.30.2setosa1.462
4.63.11.50.2setosa1.462
5.03.61.40.2setosa1.462
5.43.91.70.4setosa1.462