From bcaf370dd866c44f49b98ce6ea5ee2b0f05c498d Mon Sep 17 00:00:00 2001 From: George Moroz Date: Tue, 30 Jul 2024 23:05:19 +0300 Subject: [PATCH] add 1/2 of 2. --- book/2_data_transformation.qmd | 14 +++++++-- docs/2_data_transformation.html | 56 +++++++++++++++++++-------------- docs/search.json | 8 ++--- 3 files changed, 48 insertions(+), 30 deletions(-) diff --git a/book/2_data_transformation.qmd b/book/2_data_transformation.qmd index d97558d..1da1b2a 100644 --- a/book/2_data_transformation.qmd +++ b/book/2_data_transformation.qmd @@ -279,13 +279,19 @@ zhadina |> ## Функция `across()` +Функция `across()` позволяет применять одну и то же изменение к группе колонок, которые выбираются набором функций сходных с операциями для функции `select()`. Важно отметить, что трансформация обычно описывается функцией, и имя функции обычно пишут без круглых скобок. + ```{r} zhadina |> mutate(across(starts_with("word"), toupper)) zhadina |> mutate(across(where(is.character), toupper)) +``` + +Функция может так же работать в связке с функцией `group_by() |> summarize()` и `group_by() |> mutate()`: +```{r} set.seed(42) zhadina |> mutate(new_numeric_value = rnorm(26)) |> @@ -305,7 +311,6 @@ zhadina |> mutate(across(where(is.double), mean)) ``` - ## Функции семейства `pivot_...()` ```{r} @@ -334,9 +339,10 @@ india_langauges_long |> pivot_wider(names_from = "L", values_from = "value", values_fill = 0) ``` - ## Функции семейства `bind_...()` +Функции `bind_rows()` и `bind_cols()` позволяют соединять несколько таблиц. Функция `bind_rows()` присоединяет таблицу снизу, при этом она должна иметь столько же переменных и тип переменных должен совпадать с основной таблицей. + ```{r} zhadina_new <- tibble(word_1 = "жадина-говядина", word_2 = "пупецкий", @@ -346,7 +352,11 @@ zhadina_new <- tibble(word_1 = "жадина-говядина", zhadina |> bind_rows(zhadina_new) +``` +Функция `bind_cols()` присоединяет таблицу справа, при этом она должна иметь столько же строчек, сколько есть в с основной таблице: + +```{r} zhadina_additional_columns <- tibble(new_var1 = rnorm(26), new_var2 = letters) diff --git a/docs/2_data_transformation.html b/docs/2_data_transformation.html index 39a02f2..6f960b5 100644 --- a/docs/2_data_transformation.html +++ b/docs/2_data_transformation.html @@ -291,16 +291,16 @@

zhadina |> 
   slice_sample(prop = 0.3)
@@ -485,12 +485,12 @@

2.9 Функция across()

+

Функция across() позволяет применять одну и то же изменение к группе колонок, которые выбираются набором функций сходных с операциями для функции select(). Важно отметить, что трансформация обычно описывается функцией, и имя функции обычно пишут без круглых скобок.

zhadina |> 
   mutate(across(starts_with("word"), toupper))
@@ -1153,6 +1154,9 @@

+ +

Функция может так же работать в связке с функцией group_by() |> summarize() и group_by() |> mutate():

+
set.seed(42)
 zhadina |> 
   mutate(new_numeric_value = rnorm(26)) |> 
@@ -1299,6 +1303,7 @@ 

2.11 Функции семейства bind_...()

+

Функции bind_rows() и bind_cols() позволяют соединять несколько таблиц. Функция bind_rows() присоединяет таблицу снизу, при этом она должна иметь столько же переменных и тип переменных должен совпадать с основной таблицей.

zhadina_new <- tibble(word_1 = "жадина-говядина",
                       word_2 = "пупецкий",
@@ -1324,6 +1329,9 @@ 

zhadina_additional_columns <- tibble(new_var1 = rnorm(26),
                                      new_var2 = letters)
 
diff --git a/docs/search.json b/docs/search.json
index bc227b0..ad2fd1c 100644
--- a/docs/search.json
+++ b/docs/search.json
@@ -124,7 +124,7 @@
     "href": "2_data_transformation.html",
     "title": "2  Трансформация данных",
     "section": "",
-    "text": "2.1 tibble\nСовременный вариант датафрейма называется тиббл и отличается от классического тем, как он печатается в консоли и некоторыми дополнительными возможностями. Для его создания нужно в функцию tibble() подать именованные векторы:\ntibble(x = 1:100,\n       y = 100:1,\n       logical = sample(x = c(\"a\", \"b\", \"c\"), size = 100, replace = TRUE))\n\n# A tibble: 100 × 3\n       x     y logical\n   <int> <int> <chr>  \n 1     1   100 b      \n 2     2    99 a      \n 3     3    98 a      \n 4     4    97 b      \n 5     5    96 a      \n 6     6    95 b      \n 7     7    94 b      \n 8     8    93 c      \n 9     9    92 b      \n10    10    91 a      \n# ℹ 90 more rows\nМы будем использовать tibble() для саздание таблиц, но чаще всего мы будем считывать данные при помощи функций read_csv(), read_tsv() и прочих, которые по умолчанию преобразуют таблицу в формат tibble.",
+    "text": "2.1 tibble\nСовременный вариант датафрейма называется тиббл и отличается от классического тем, как он печатается в консоли и некоторыми дополнительными возможностями. Для его создания нужно в функцию tibble() подать именованные векторы:\ntibble(x = 1:100,\n       y = 100:1,\n       logical = sample(x = c(\"a\", \"b\", \"c\"), size = 100, replace = TRUE))\n\n# A tibble: 100 × 3\n       x     y logical\n   <int> <int> <chr>  \n 1     1   100 a      \n 2     2    99 c      \n 3     3    98 b      \n 4     4    97 c      \n 5     5    96 b      \n 6     6    95 b      \n 7     7    94 a      \n 8     8    93 b      \n 9     9    92 c      \n10    10    91 c      \n# ℹ 90 more rows\nМы будем использовать tibble() для саздание таблиц, но чаще всего мы будем считывать данные при помощи функций read_csv(), read_tsv() и прочих, которые по умолчанию преобразуют таблицу в формат tibble.",
     "crumbs": [
       "2  Трансформация данных"
     ]
@@ -134,7 +134,7 @@
     "href": "2_data_transformation.html#функции-семейства-slice",
     "title": "2  Трансформация данных",
     "section": "2.3 Функции семейства slice()",
-    "text": "2.3 Функции семейства slice()\nДальше мы посмотрим на фрагмент данных из исследования издания N+1 дразнилки “Жадина-говядина”, где исследовались социолингвистические аспекты влияющие на тенденцию к тому или иному продолжению. Переменные word_1, word_2 и word_3 соотвествуют разным вариантам начала, переменная type описывает классификацию, которую варианту дали исследователи, а переменная n отвечает за количество этих вариантов в данных.\n\nzhadina <- read_csv(\"https://raw.githubusercontent.com/agricolamz/daR4hs/main/data/w2_zhadina.csv\")\nzhadina\n\n# A tibble: 26 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 жадина-говядина большая шоколадина шоколадина   941\n 2 жадина-говядина бука    шоколадина шоколадина    44\n 3 жадина-говядина булка   шоколадина шоколадина   250\n 4 жадина-говядина в *опе  огурец     огурец        11\n 5 жадина-говядина в *опе  шоколадина шоколадина  1117\n 6 жадина-говядина гнилая  шоколадина шоколадина    12\n 7 жадина-говядина дома    шоколадина шоколадина    29\n 8 жадина-говядина зеленый огурец     огурец       343\n 9 жадина-говядина злая    шоколадина шоколадина    10\n10 жадина-говядина кислая  капуста    другое        10\n# ℹ 16 more rows\n\n\nПервые функции tidyverse, которая будет нас интересовать, — это функции семейства slice(). Функция slice() позволяет фильтровать нужные строчки датасета по индексу:\n\nzhadina |> \n  slice(c(6, 25, 3))\n\n# A tibble: 3 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина гнилая   шоколадина шоколадина    12\n2 жадина-говядина турецкий барабан    барабан     3003\n3 жадина-говядина булка    шоколадина шоколадина   250\n\nzhadina |> \n  slice(6:25)\n\n# A tibble: 20 × 5\n   word_1          word_2   word_3     type           n\n   <chr>           <chr>    <chr>      <chr>      <dbl>\n 1 жадина-говядина гнилая   шоколадина шоколадина    12\n 2 жадина-говядина дома     шоколадина шоколадина    29\n 3 жадина-говядина зеленый  огурец     огурец       343\n 4 жадина-говядина злая     шоколадина шоколадина    10\n 5 жадина-говядина кислая   капуста    другое        10\n 6 жадина-говядина кошка    поросятина другое        42\n 7 жадина-говядина кошка    шоколадина шоколадина    18\n 8 жадина-говядина никто ее не ест     другое        10\n 9 жадина-говядина кусок    шоколадины шоколадина   113\n10 жадина-говядина на пузе  барабан    барабан       14\n11 жадина-говядина немецкий барабан    барабан       12\n12 жадина-говядина *опа     шоколадина шоколадина   299\n13 жадина-говядина простая  шоколадина шоколадина    59\n14 жадина-говядина пустая   шоколадина шоколадина  3774\n15 жадина-говядина соленый  барабан    барабан       11\n16 жадина-говядина соленый  огурец     огурец     26910\n17 жадина-говядина соленый  помидор    другое        17\n18 жадина-говядина сухая    шоколадина шоколадина    16\n19 жадина-говядина тупая    шоколадина шоколадина    50\n20 жадина-говядина турецкий барабан    барабан     3003\n\n\nСтоит обратить внимание, что результат работы функции выводиться в консоль, чтобы сохранить результат работы, следует сделать операцию приписывания одним из следующих способов (первый наиболее распространенный):\n\nnew_zhadina <- zhadina |> \n  slice(6:25)\n\nzhadina |> \n  slice(6:25) ->\n  new_zhadina\n\nКроме того, есть функции slice_head() и slice_tail(), которые выдают первое/последнее наблюдение. Аргумент n позволяет донастроить, сколько первых/последних наблюдений хочется вывести:\n\nzhadina |> \n  slice_head()\n\n# A tibble: 1 × 5\n  word_1          word_2  word_3     type           n\n  <chr>           <chr>   <chr>      <chr>      <dbl>\n1 жадина-говядина большая шоколадина шоколадина   941\n\nzhadina |> \n  slice_tail()\n\n# A tibble: 1 × 5\n  word_1          word_2   word_3  type       n\n  <chr>           <chr>    <chr>   <chr>  <dbl>\n1 жадина-говядина турецкий таракан другое    13\n\nzhadina |> \n  slice_tail(n = 6)\n\n# A tibble: 6 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина соленый  огурец     огурец     26910\n2 жадина-говядина соленый  помидор    другое        17\n3 жадина-говядина сухая    шоколадина шоколадина    16\n4 жадина-говядина тупая    шоколадина шоколадина    50\n5 жадина-говядина турецкий барабан    барабан     3003\n6 жадина-говядина турецкий таракан    другое        13\n\n\nСтоит отметить, что совпадение имени аргумента и названия столбца в нашем датасете (n) никак не влияет на работу функции. Также полезными могут быть функции slice_max() и slice_min(), которые выдают максимальное/минимальное значение переменной. У этой функции тоже есть аргумент n:\n\nzhadina |> \n  slice_max(n)\n\n# A tibble: 1 × 5\n  word_1          word_2  word_3 type       n\n  <chr>           <chr>   <chr>  <chr>  <dbl>\n1 жадина-говядина соленый огурец огурец 26910\n\nzhadina |> \n  slice_min(n)\n\n# A tibble: 3 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина злая     шоколадина шоколадина    10\n2 жадина-говядина кислая   капуста    другое        10\n3 жадина-говядина никто ее не ест     другое        10\n\nzhadina |> \n  slice_max(n, n = 3)\n\n# A tibble: 3 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина соленый  огурец     огурец     26910\n2 жадина-говядина пустая   шоколадина шоколадина  3774\n3 жадина-говядина турецкий барабан    барабан     3003\n\n\nФункция slice_sample() позволяет вывести выборку из некоторого количества строчек (аргумент n) или долю строчек (аргумент prop):\n\nzhadina |> \n  slice_sample(n = 10)\n\n# A tibble: 10 × 5\n   word_1          word_2   word_3     type           n\n   <chr>           <chr>    <chr>      <chr>      <dbl>\n 1 жадина-говядина булка    шоколадина шоколадина   250\n 2 жадина-говядина дома     шоколадина шоколадина    29\n 3 жадина-говядина соленый  помидор    другое        17\n 4 жадина-говядина бука     шоколадина шоколадина    44\n 5 жадина-говядина кошка    шоколадина шоколадина    18\n 6 жадина-говядина кусок    шоколадины шоколадина   113\n 7 жадина-говядина никто ее не ест     другое        10\n 8 жадина-говядина кошка    поросятина другое        42\n 9 жадина-говядина пустая   шоколадина шоколадина  3774\n10 жадина-говядина в *опе   огурец     огурец        11\n\nzhadina |> \n  slice_sample(prop = 0.3)\n\n# A tibble: 7 × 5\n  word_1          word_2  word_3     type           n\n  <chr>           <chr>   <chr>      <chr>      <dbl>\n1 жадина-говядина в *опе  огурец     огурец        11\n2 жадина-говядина кошка   поросятина другое        42\n3 жадина-говядина простая шоколадина шоколадина    59\n4 жадина-говядина в *опе  шоколадина шоколадина  1117\n5 жадина-говядина дома    шоколадина шоколадина    29\n6 жадина-говядина злая    шоколадина шоколадина    10\n7 жадина-говядина кислая  капуста    другое        10",
+    "text": "2.3 Функции семейства slice()\nДальше мы посмотрим на фрагмент данных из исследования издания N+1 дразнилки “Жадина-говядина”, где исследовались социолингвистические аспекты влияющие на тенденцию к тому или иному продолжению. Переменные word_1, word_2 и word_3 соотвествуют разным вариантам начала, переменная type описывает классификацию, которую варианту дали исследователи, а переменная n отвечает за количество этих вариантов в данных.\n\nzhadina <- read_csv(\"https://raw.githubusercontent.com/agricolamz/daR4hs/main/data/w2_zhadina.csv\")\nzhadina\n\n# A tibble: 26 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 жадина-говядина большая шоколадина шоколадина   941\n 2 жадина-говядина бука    шоколадина шоколадина    44\n 3 жадина-говядина булка   шоколадина шоколадина   250\n 4 жадина-говядина в *опе  огурец     огурец        11\n 5 жадина-говядина в *опе  шоколадина шоколадина  1117\n 6 жадина-говядина гнилая  шоколадина шоколадина    12\n 7 жадина-говядина дома    шоколадина шоколадина    29\n 8 жадина-говядина зеленый огурец     огурец       343\n 9 жадина-говядина злая    шоколадина шоколадина    10\n10 жадина-говядина кислая  капуста    другое        10\n# ℹ 16 more rows\n\n\nПервые функции tidyverse, которая будет нас интересовать, — это функции семейства slice(). Функция slice() позволяет фильтровать нужные строчки датасета по индексу:\n\nzhadina |> \n  slice(c(6, 25, 3))\n\n# A tibble: 3 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина гнилая   шоколадина шоколадина    12\n2 жадина-говядина турецкий барабан    барабан     3003\n3 жадина-говядина булка    шоколадина шоколадина   250\n\nzhadina |> \n  slice(6:25)\n\n# A tibble: 20 × 5\n   word_1          word_2   word_3     type           n\n   <chr>           <chr>    <chr>      <chr>      <dbl>\n 1 жадина-говядина гнилая   шоколадина шоколадина    12\n 2 жадина-говядина дома     шоколадина шоколадина    29\n 3 жадина-говядина зеленый  огурец     огурец       343\n 4 жадина-говядина злая     шоколадина шоколадина    10\n 5 жадина-говядина кислая   капуста    другое        10\n 6 жадина-говядина кошка    поросятина другое        42\n 7 жадина-говядина кошка    шоколадина шоколадина    18\n 8 жадина-говядина никто ее не ест     другое        10\n 9 жадина-говядина кусок    шоколадины шоколадина   113\n10 жадина-говядина на пузе  барабан    барабан       14\n11 жадина-говядина немецкий барабан    барабан       12\n12 жадина-говядина *опа     шоколадина шоколадина   299\n13 жадина-говядина простая  шоколадина шоколадина    59\n14 жадина-говядина пустая   шоколадина шоколадина  3774\n15 жадина-говядина соленый  барабан    барабан       11\n16 жадина-говядина соленый  огурец     огурец     26910\n17 жадина-говядина соленый  помидор    другое        17\n18 жадина-говядина сухая    шоколадина шоколадина    16\n19 жадина-говядина тупая    шоколадина шоколадина    50\n20 жадина-говядина турецкий барабан    барабан     3003\n\n\nСтоит обратить внимание, что результат работы функции выводиться в консоль, чтобы сохранить результат работы, следует сделать операцию приписывания одним из следующих способов (первый наиболее распространенный):\n\nnew_zhadina <- zhadina |> \n  slice(6:25)\n\nzhadina |> \n  slice(6:25) ->\n  new_zhadina\n\nКроме того, есть функции slice_head() и slice_tail(), которые выдают первое/последнее наблюдение. Аргумент n позволяет донастроить, сколько первых/последних наблюдений хочется вывести:\n\nzhadina |> \n  slice_head()\n\n# A tibble: 1 × 5\n  word_1          word_2  word_3     type           n\n  <chr>           <chr>   <chr>      <chr>      <dbl>\n1 жадина-говядина большая шоколадина шоколадина   941\n\nzhadina |> \n  slice_tail()\n\n# A tibble: 1 × 5\n  word_1          word_2   word_3  type       n\n  <chr>           <chr>    <chr>   <chr>  <dbl>\n1 жадина-говядина турецкий таракан другое    13\n\nzhadina |> \n  slice_tail(n = 6)\n\n# A tibble: 6 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина соленый  огурец     огурец     26910\n2 жадина-говядина соленый  помидор    другое        17\n3 жадина-говядина сухая    шоколадина шоколадина    16\n4 жадина-говядина тупая    шоколадина шоколадина    50\n5 жадина-говядина турецкий барабан    барабан     3003\n6 жадина-говядина турецкий таракан    другое        13\n\n\nСтоит отметить, что совпадение имени аргумента и названия столбца в нашем датасете (n) никак не влияет на работу функции. Также полезными могут быть функции slice_max() и slice_min(), которые выдают максимальное/минимальное значение переменной. У этой функции тоже есть аргумент n:\n\nzhadina |> \n  slice_max(n)\n\n# A tibble: 1 × 5\n  word_1          word_2  word_3 type       n\n  <chr>           <chr>   <chr>  <chr>  <dbl>\n1 жадина-говядина соленый огурец огурец 26910\n\nzhadina |> \n  slice_min(n)\n\n# A tibble: 3 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина злая     шоколадина шоколадина    10\n2 жадина-говядина кислая   капуста    другое        10\n3 жадина-говядина никто ее не ест     другое        10\n\nzhadina |> \n  slice_max(n, n = 3)\n\n# A tibble: 3 × 5\n  word_1          word_2   word_3     type           n\n  <chr>           <chr>    <chr>      <chr>      <dbl>\n1 жадина-говядина соленый  огурец     огурец     26910\n2 жадина-говядина пустая   шоколадина шоколадина  3774\n3 жадина-говядина турецкий барабан    барабан     3003\n\n\nФункция slice_sample() позволяет вывести выборку из некоторого количества строчек (аргумент n) или долю строчек (аргумент prop):\n\nzhadina |> \n  slice_sample(n = 10)\n\n# A tibble: 10 × 5\n   word_1          word_2   word_3     type           n\n   <chr>           <chr>    <chr>      <chr>      <dbl>\n 1 жадина-говядина кислая   капуста    другое        10\n 2 жадина-говядина кусок    шоколадины шоколадина   113\n 3 жадина-говядина злая     шоколадина шоколадина    10\n 4 жадина-говядина кошка    шоколадина шоколадина    18\n 5 жадина-говядина немецкий барабан    барабан       12\n 6 жадина-говядина соленый  барабан    барабан       11\n 7 жадина-говядина соленый  огурец     огурец     26910\n 8 жадина-говядина кошка    поросятина другое        42\n 9 жадина-говядина зеленый  огурец     огурец       343\n10 жадина-говядина соленый  помидор    другое        17\n\nzhadina |> \n  slice_sample(prop = 0.3)\n\n# A tibble: 7 × 5\n  word_1          word_2  word_3     type           n\n  <chr>           <chr>   <chr>      <chr>      <dbl>\n1 жадина-говядина зеленый огурец     огурец       343\n2 жадина-говядина бука    шоколадина шоколадина    44\n3 жадина-говядина кусок   шоколадины шоколадина   113\n4 жадина-говядина на пузе барабан    барабан       14\n5 жадина-говядина пустая  шоколадина шоколадина  3774\n6 жадина-говядина сухая   шоколадина шоколадина    16\n7 жадина-говядина кислая  капуста    другое        10",
     "crumbs": [
       "2  Трансформация данных"
     ]
@@ -184,7 +184,7 @@
     "href": "2_data_transformation.html#функция-across",
     "title": "2  Трансформация данных",
     "section": "2.9 Функция across()",
-    "text": "2.9 Функция across()\n\nzhadina |> \n  mutate(across(starts_with(\"word\"), toupper))\n\n# A tibble: 26 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 ЖАДИНА-ГОВЯДИНА БОЛЬШАЯ ШОКОЛАДИНА шоколадина   941\n 2 ЖАДИНА-ГОВЯДИНА БУКА    ШОКОЛАДИНА шоколадина    44\n 3 ЖАДИНА-ГОВЯДИНА БУЛКА   ШОКОЛАДИНА шоколадина   250\n 4 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ОГУРЕЦ     огурец        11\n 5 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ШОКОЛАДИНА шоколадина  1117\n 6 ЖАДИНА-ГОВЯДИНА ГНИЛАЯ  ШОКОЛАДИНА шоколадина    12\n 7 ЖАДИНА-ГОВЯДИНА ДОМА    ШОКОЛАДИНА шоколадина    29\n 8 ЖАДИНА-ГОВЯДИНА ЗЕЛЕНЫЙ ОГУРЕЦ     огурец       343\n 9 ЖАДИНА-ГОВЯДИНА ЗЛАЯ    ШОКОЛАДИНА шоколадина    10\n10 ЖАДИНА-ГОВЯДИНА КИСЛАЯ  КАПУСТА    другое        10\n# ℹ 16 more rows\n\nzhadina |> \n  mutate(across(where(is.character), toupper))\n\n# A tibble: 26 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 ЖАДИНА-ГОВЯДИНА БОЛЬШАЯ ШОКОЛАДИНА ШОКОЛАДИНА   941\n 2 ЖАДИНА-ГОВЯДИНА БУКА    ШОКОЛАДИНА ШОКОЛАДИНА    44\n 3 ЖАДИНА-ГОВЯДИНА БУЛКА   ШОКОЛАДИНА ШОКОЛАДИНА   250\n 4 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ОГУРЕЦ     ОГУРЕЦ        11\n 5 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ШОКОЛАДИНА ШОКОЛАДИНА  1117\n 6 ЖАДИНА-ГОВЯДИНА ГНИЛАЯ  ШОКОЛАДИНА ШОКОЛАДИНА    12\n 7 ЖАДИНА-ГОВЯДИНА ДОМА    ШОКОЛАДИНА ШОКОЛАДИНА    29\n 8 ЖАДИНА-ГОВЯДИНА ЗЕЛЕНЫЙ ОГУРЕЦ     ОГУРЕЦ       343\n 9 ЖАДИНА-ГОВЯДИНА ЗЛАЯ    ШОКОЛАДИНА ШОКОЛАДИНА    10\n10 ЖАДИНА-ГОВЯДИНА КИСЛАЯ  КАПУСТА    ДРУГОЕ        10\n# ℹ 16 more rows\n\nset.seed(42)\nzhadina |> \n  mutate(new_numeric_value = rnorm(26)) |> \n  group_by(type) |> \n  summarise(across(where(is.double), mean))\n\n# A tibble: 4 × 3\n  type            n new_numeric_value\n  <chr>       <dbl>             <dbl>\n1 барабан     760              0.929 \n2 другое       18.4           -0.472 \n3 огурец     9088              0.0772\n4 шоколадина  481.             0.190 \n\nset.seed(42)\nzhadina |> \n  mutate(new_numeric_value = rnorm(26)) |> \n  group_by(type) |> \n  summarise(n = mean(n),\n            new_numeric_value = mean(new_numeric_value))\n\n# A tibble: 4 × 3\n  type            n new_numeric_value\n  <chr>       <dbl>             <dbl>\n1 барабан     760              0.929 \n2 другое       18.4           -0.472 \n3 огурец     9088              0.0772\n4 шоколадина  481.             0.190 \n\nzhadina |> \n  mutate(new_numeric_value = rnorm(26)) |> \n  group_by(type) |> \n  mutate(across(where(is.double), mean))\n\n# A tibble: 26 × 6\n# Groups:   type [4]\n   word_1          word_2  word_3     type            n new_numeric_value\n   <chr>           <chr>   <chr>      <chr>       <dbl>             <dbl>\n 1 жадина-говядина большая шоколадина шоколадина  481.            -0.0562\n 2 жадина-говядина бука    шоколадина шоколадина  481.            -0.0562\n 3 жадина-говядина булка   шоколадина шоколадина  481.            -0.0562\n 4 жадина-говядина в *опе  огурец     огурец     9088             -0.687 \n 5 жадина-говядина в *опе  шоколадина шоколадина  481.            -0.0562\n 6 жадина-говядина гнилая  шоколадина шоколадина  481.            -0.0562\n 7 жадина-говядина дома    шоколадина шоколадина  481.            -0.0562\n 8 жадина-говядина зеленый огурец     огурец     9088             -0.687 \n 9 жадина-говядина злая    шоколадина шоколадина  481.            -0.0562\n10 жадина-говядина кислая  капуста    другое       18.4           -0.851 \n# ℹ 16 more rows",
+    "text": "2.9 Функция across()\nФункция across() позволяет применять одну и то же изменение к группе колонок, которые выбираются набором функций сходных с операциями для функции select(). Важно отметить, что трансформация обычно описывается функцией, и имя функции обычно пишут без круглых скобок.\n\nzhadina |> \n  mutate(across(starts_with(\"word\"), toupper))\n\n# A tibble: 26 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 ЖАДИНА-ГОВЯДИНА БОЛЬШАЯ ШОКОЛАДИНА шоколадина   941\n 2 ЖАДИНА-ГОВЯДИНА БУКА    ШОКОЛАДИНА шоколадина    44\n 3 ЖАДИНА-ГОВЯДИНА БУЛКА   ШОКОЛАДИНА шоколадина   250\n 4 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ОГУРЕЦ     огурец        11\n 5 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ШОКОЛАДИНА шоколадина  1117\n 6 ЖАДИНА-ГОВЯДИНА ГНИЛАЯ  ШОКОЛАДИНА шоколадина    12\n 7 ЖАДИНА-ГОВЯДИНА ДОМА    ШОКОЛАДИНА шоколадина    29\n 8 ЖАДИНА-ГОВЯДИНА ЗЕЛЕНЫЙ ОГУРЕЦ     огурец       343\n 9 ЖАДИНА-ГОВЯДИНА ЗЛАЯ    ШОКОЛАДИНА шоколадина    10\n10 ЖАДИНА-ГОВЯДИНА КИСЛАЯ  КАПУСТА    другое        10\n# ℹ 16 more rows\n\nzhadina |> \n  mutate(across(where(is.character), toupper))\n\n# A tibble: 26 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 ЖАДИНА-ГОВЯДИНА БОЛЬШАЯ ШОКОЛАДИНА ШОКОЛАДИНА   941\n 2 ЖАДИНА-ГОВЯДИНА БУКА    ШОКОЛАДИНА ШОКОЛАДИНА    44\n 3 ЖАДИНА-ГОВЯДИНА БУЛКА   ШОКОЛАДИНА ШОКОЛАДИНА   250\n 4 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ОГУРЕЦ     ОГУРЕЦ        11\n 5 ЖАДИНА-ГОВЯДИНА В *ОПЕ  ШОКОЛАДИНА ШОКОЛАДИНА  1117\n 6 ЖАДИНА-ГОВЯДИНА ГНИЛАЯ  ШОКОЛАДИНА ШОКОЛАДИНА    12\n 7 ЖАДИНА-ГОВЯДИНА ДОМА    ШОКОЛАДИНА ШОКОЛАДИНА    29\n 8 ЖАДИНА-ГОВЯДИНА ЗЕЛЕНЫЙ ОГУРЕЦ     ОГУРЕЦ       343\n 9 ЖАДИНА-ГОВЯДИНА ЗЛАЯ    ШОКОЛАДИНА ШОКОЛАДИНА    10\n10 ЖАДИНА-ГОВЯДИНА КИСЛАЯ  КАПУСТА    ДРУГОЕ        10\n# ℹ 16 more rows\n\n\nФункция может так же работать в связке с функцией group_by() |> summarize() и group_by() |> mutate():\n\nset.seed(42)\nzhadina |> \n  mutate(new_numeric_value = rnorm(26)) |> \n  group_by(type) |> \n  summarise(across(where(is.double), mean))\n\n# A tibble: 4 × 3\n  type            n new_numeric_value\n  <chr>       <dbl>             <dbl>\n1 барабан     760              0.929 \n2 другое       18.4           -0.472 \n3 огурец     9088              0.0772\n4 шоколадина  481.             0.190 \n\nset.seed(42)\nzhadina |> \n  mutate(new_numeric_value = rnorm(26)) |> \n  group_by(type) |> \n  summarise(n = mean(n),\n            new_numeric_value = mean(new_numeric_value))\n\n# A tibble: 4 × 3\n  type            n new_numeric_value\n  <chr>       <dbl>             <dbl>\n1 барабан     760              0.929 \n2 другое       18.4           -0.472 \n3 огурец     9088              0.0772\n4 шоколадина  481.             0.190 \n\nzhadina |> \n  mutate(new_numeric_value = rnorm(26)) |> \n  group_by(type) |> \n  mutate(across(where(is.double), mean))\n\n# A tibble: 26 × 6\n# Groups:   type [4]\n   word_1          word_2  word_3     type            n new_numeric_value\n   <chr>           <chr>   <chr>      <chr>       <dbl>             <dbl>\n 1 жадина-говядина большая шоколадина шоколадина  481.            -0.0562\n 2 жадина-говядина бука    шоколадина шоколадина  481.            -0.0562\n 3 жадина-говядина булка   шоколадина шоколадина  481.            -0.0562\n 4 жадина-говядина в *опе  огурец     огурец     9088             -0.687 \n 5 жадина-говядина в *опе  шоколадина шоколадина  481.            -0.0562\n 6 жадина-говядина гнилая  шоколадина шоколадина  481.            -0.0562\n 7 жадина-говядина дома    шоколадина шоколадина  481.            -0.0562\n 8 жадина-говядина зеленый огурец     огурец     9088             -0.687 \n 9 жадина-говядина злая    шоколадина шоколадина  481.            -0.0562\n10 жадина-говядина кислая  капуста    другое       18.4           -0.851 \n# ℹ 16 more rows",
     "crumbs": [
       "2  Трансформация данных"
     ]
@@ -204,7 +204,7 @@
     "href": "2_data_transformation.html#функции-семейства-bind_...",
     "title": "2  Трансформация данных",
     "section": "2.11 Функции семейства bind_...()",
-    "text": "2.11 Функции семейства bind_...()\n\nzhadina_new <- tibble(word_1 = \"жадина-говядина\",\n                      word_2 = \"пупецкий\",\n                      word_3 = \"барабан\",\n                      type = \"барабан\",\n                      n = 0)\n\nzhadina |> \n  bind_rows(zhadina_new)\n\n# A tibble: 27 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 жадина-говядина большая шоколадина шоколадина   941\n 2 жадина-говядина бука    шоколадина шоколадина    44\n 3 жадина-говядина булка   шоколадина шоколадина   250\n 4 жадина-говядина в *опе  огурец     огурец        11\n 5 жадина-говядина в *опе  шоколадина шоколадина  1117\n 6 жадина-говядина гнилая  шоколадина шоколадина    12\n 7 жадина-говядина дома    шоколадина шоколадина    29\n 8 жадина-говядина зеленый огурец     огурец       343\n 9 жадина-говядина злая    шоколадина шоколадина    10\n10 жадина-говядина кислая  капуста    другое        10\n# ℹ 17 more rows\n\nzhadina_additional_columns <- tibble(new_var1 = rnorm(26),\n                                     new_var2 = letters)\n\nzhadina |> \n  bind_cols(zhadina_additional_columns)\n\n# A tibble: 26 × 7\n   word_1          word_2  word_3     type           n new_var1 new_var2\n   <chr>           <chr>   <chr>      <chr>      <dbl>    <dbl> <chr>   \n 1 жадина-говядина большая шоколадина шоколадина   941   0.464  a       \n 2 жадина-говядина бука    шоколадина шоколадина    44  -0.886  b       \n 3 жадина-говядина булка   шоколадина шоколадина   250  -1.10   c       \n 4 жадина-говядина в *опе  огурец     огурец        11   1.51   d       \n 5 жадина-говядина в *опе  шоколадина шоколадина  1117   0.258  e       \n 6 жадина-говядина гнилая  шоколадина шоколадина    12   0.0884 f       \n 7 жадина-говядина дома    шоколадина шоколадина    29  -0.121  g       \n 8 жадина-говядина зеленый огурец     огурец       343  -1.19   h       \n 9 жадина-говядина злая    шоколадина шоколадина    10   0.612  i       \n10 жадина-говядина кислая  капуста    другое        10  -0.217  j       \n# ℹ 16 more rows",
+    "text": "2.11 Функции семейства bind_...()\nФункции bind_rows() и bind_cols() позволяют соединять несколько таблиц. Функция bind_rows() присоединяет таблицу снизу, при этом она должна иметь столько же переменных и тип переменных должен совпадать с основной таблицей.\n\nzhadina_new <- tibble(word_1 = \"жадина-говядина\",\n                      word_2 = \"пупецкий\",\n                      word_3 = \"барабан\",\n                      type = \"барабан\",\n                      n = 0)\n\nzhadina |> \n  bind_rows(zhadina_new)\n\n# A tibble: 27 × 5\n   word_1          word_2  word_3     type           n\n   <chr>           <chr>   <chr>      <chr>      <dbl>\n 1 жадина-говядина большая шоколадина шоколадина   941\n 2 жадина-говядина бука    шоколадина шоколадина    44\n 3 жадина-говядина булка   шоколадина шоколадина   250\n 4 жадина-говядина в *опе  огурец     огурец        11\n 5 жадина-говядина в *опе  шоколадина шоколадина  1117\n 6 жадина-говядина гнилая  шоколадина шоколадина    12\n 7 жадина-говядина дома    шоколадина шоколадина    29\n 8 жадина-говядина зеленый огурец     огурец       343\n 9 жадина-говядина злая    шоколадина шоколадина    10\n10 жадина-говядина кислая  капуста    другое        10\n# ℹ 17 more rows\n\n\nФункция bind_cols() присоединяет таблицу справа, при этом она должна иметь столько же строчек, сколько есть в с основной таблице:\n\nzhadina_additional_columns <- tibble(new_var1 = rnorm(26),\n                                     new_var2 = letters)\n\nzhadina |> \n  bind_cols(zhadina_additional_columns)\n\n# A tibble: 26 × 7\n   word_1          word_2  word_3     type           n new_var1 new_var2\n   <chr>           <chr>   <chr>      <chr>      <dbl>    <dbl> <chr>   \n 1 жадина-говядина большая шоколадина шоколадина   941   0.464  a       \n 2 жадина-говядина бука    шоколадина шоколадина    44  -0.886  b       \n 3 жадина-говядина булка   шоколадина шоколадина   250  -1.10   c       \n 4 жадина-говядина в *опе  огурец     огурец        11   1.51   d       \n 5 жадина-говядина в *опе  шоколадина шоколадина  1117   0.258  e       \n 6 жадина-говядина гнилая  шоколадина шоколадина    12   0.0884 f       \n 7 жадина-говядина дома    шоколадина шоколадина    29  -0.121  g       \n 8 жадина-говядина зеленый огурец     огурец       343  -1.19   h       \n 9 жадина-говядина злая    шоколадина шоколадина    10   0.612  i       \n10 жадина-говядина кислая  капуста    другое        10  -0.217  j       \n# ℹ 16 more rows",
     "crumbs": [
       "2  Трансформация данных"
     ]