Skip to content

Commit

Permalink
finish 2.
Browse files Browse the repository at this point in the history
  • Loading branch information
agricolamz committed Aug 1, 2024
1 parent a35dc05 commit c6ec213
Show file tree
Hide file tree
Showing 12 changed files with 612 additions and 397 deletions.
131 changes: 97 additions & 34 deletions book/2_data_transformation.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,11 @@ tibble(x = 1:100,

## Использование конвеера (пайпа)

В нашем коде мы часто будем использовать знаки конвеера (или пайпа): `|>` (также можно встретить популярный ранее `%>%`). Конвеер призван показывать последовательность действий. Сочетание клавиш для написание конвеера: `Ctrl/Cmd + M`.
В нашем коде мы часто будем использовать знаки конвеера (или пайпа): `|>` (также можно встретить популярный ранее `%>%`). Чтобы вставлять новый конвеер придется сделать изменение в настройках RStudio (Tools > Global Options > вкладвка Code):

![](images/02_rstudio_pipe.png)

Конвеер призван показывать последовательность действий. Сочетание клавиш для написание конвеера: `Ctrl/Cmd + Shift + M` (хотя RStudio позволяет горячие клавиши переназначить).

```{r}
mean(sqrt(abs(sin(c(1:100, NA)))), na.rm = TRUE)
Expand Down Expand Up @@ -115,35 +119,6 @@ zhadina |>
slice_sample(prop = 0.3)
```

## Функция `select()`

Функция `select()` позволяет выбрать из датасета некоторый набор столбцов.

```{r}
zhadina |>
select(word_1, type, n)
```

Внутри функции `select()` можно использовать функции, которые позволяют не только перечислять через запятую необходимые столбцы, но и выделять их по имени:

```{r}
zhadina |>
select(starts_with("word"))
zhadina |>
select(ends_with("1"))
zhadina |>
select(matches("ord"))
```

Кроме того, внутри функции `select()` действует оператор двоеточие, который мы видели при создании векторов `5:10`:

```{r}
zhadina |>
select(word_3:n) # от колонки word_3 до колонки n
```

## Функция `filter()`

Функция `filter()` позволяет отфильтровывать строки таблицы по одному или нескольким условиям.
Expand Down Expand Up @@ -237,6 +212,36 @@ zhadina |>
arrange(word_3)
```

## Функция `select()`

Функция `select()` позволяет выбрать из датасета некоторый набор столбцов.

```{r}
zhadina |>
select(word_1, type, n)
```

Внутри функции `select()` можно использовать функции, которые позволяют не только перечислять через запятую необходимые столбцы, но и выделять их по имени:

```{r}
zhadina |>
select(starts_with("word"))
zhadina |>
select(ends_with("1"))
zhadina |>
select(matches("ord"))
```

Кроме того, внутри функции `select()` действует оператор двоеточие, который мы видели при создании векторов `5:10`:

```{r}
zhadina |>
select(word_3:n) # от колонки word_3 до колонки n
```


## Функция `mutate()`

Функция `mutate()` позволяет создавать и изменять уже имеющиеся переменные:
Expand All @@ -250,34 +255,90 @@ zhadina |>
mutate(n = n^3)
```

## Функция `relocate()`

Функция `relocate()` позволяет перемещать переменные в таблице (по умолчанию в начало):

```{r}
zhadina |>
relocate(type)
```

Если хочется перемещать в какое-то другое место, то можно использовать аргументы `.after` и `.before`:

```{r}
zhadina |>
relocate(n, .after = word_3)
zhadina |>
relocate(n, .before = type)
```

## Функция `group_by() |> summarise()` и `group_by() |> mutate()`

Все предыдущие операции работали со строками и столбцами таблицами. В этом разделе мы познакомимся с операцией группировки, которая позволяет разделять таблицу на группы и агрегировать информацию по этим группам. Функция `group_by()` разделяет на группы, но саму структуру и содержание таблицы не меняет, однако при печати выводится сообщение об имени группирующей переменной и сколько всего групп:

```{r}
zhadina |>
group_by(type)
```

После того как мы сгруппировали можно использовать функцию `summarise()` (или ее американский вариант `summarize()`), она возвращает по одному значению на каждую группу. Например, посчитаем среднее количество встречаемости для каждого типа:

```{r}
zhadina |>
group_by(type) |>
summarise(mean_by_type = mean(n))
```

Функций саммаризации может быть несколько:

```{r}
zhadina |>
group_by(type) |>
summarise(mean_by_type = mean(n),
median_by_type = median(n))
```

Кроме того, важно отметить, что группировка может происходить не по одной переменной, а по нескольким.

```{r}
zhadina |>
group_by(type, word_3) |>
summarise(mean_by_type = mean(n),
median_by_type = median(n))
```

Важно также отметить, что в функции `summarise()` с недавних пор аргумент `.by`, который является заменой функции `group_by()`:

```{r}
zhadina |>
group_by(type, word_3) |>
mutate(mean_by_type = mean(n),
median_by_type = median(n))
summarise(mean_by_type = mean(n),
median_by_type = median(n),
.by = c(type, word_3))
```

Кроме того, функцию `group_by()` или аргумент `.by` можно использовать в связке с функцией `mutate()`. В таком случае саммаризирующий результат будет выведен не единожды для каждой группы, а присоединен к исходной таблице в виде новой переменной.

```{r}
zhadina |>
group_by(type) |>
mutate(mean_by_type = mean(n),
median_by_type = median(n))
zhadina |>
mutate(mean_by_type = mean(n),
median_by_type = median(n),
.by = type)
```

Не так часто, но все же бывает, что в большом длинном конвеере, который совмещает в себе много действий, группировка может мешать, так что ее можно снять функцией `ungroup()`:

```{r}
zhadina |>
group_by(type) |>
mutate(mean_by_type = mean(n)) |>
ungroup()
```

## Функция `across()`
Expand Down Expand Up @@ -388,7 +449,9 @@ zhadina |>

Синтаксис функций выглядит так (`A` и `B` --- датафреймы):

```
```{r}
#| eval: false
A |>
..._join(B)
```
Expand Down
1 change: 0 additions & 1 deletion book/3_data_visualization.qmd
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Визуализация данных


## Зачем визуализировать данные?

### Квартет Анскомба
Expand Down
Binary file modified book/5_working_with_texts_files/figure-html/unnamed-chunk-39-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added book/images/02_rstudio_pipe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit c6ec213

Please sign in to comment.