Pivot в R: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) Новая страница: «{{Scripting Tutorials |Description=Pivot в R (из пакета tidyr) — это "поворот" или "сводка данных", простыми словами — инструмент для перестройки формы таблицы: из длинной (long) в широкую (wide) и наоборот. Представьте, что данные — это пластилин: pivot_longer "растягивает" таблицу вниз,...» |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| Строка 66: | Строка 66: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Категория:Lesson]] | |||
Версия от 11:43, 3 марта 2026
| Описание | Pivot в R (из пакета tidyr) — это "поворот" или "сводка данных", простыми словами — инструмент для перестройки формы таблицы: из длинной (long) в широкую (wide) и наоборот. Представьте, что данные — это пластилин: pivot_longer "растягивает" таблицу вниз, превращая столбцы в строки, а pivot_wider "расплющивает" её в стороны, делая из строк новые столбцы. Это нужно, чтобы привести данные к tidy-стандарту для удобного анализа, графиков и моделей — в образовании часто данные приходят "криво" (оценки по предметам в столбцах или в строках), а pivot их быстро приводит в порядок. |
|---|---|
| Область знаний | Информатика, Большие данные |
| Область использования (ISTE) | |
| Возрастная категория | 15
|
| Поясняющее видео | |
| Близкие рецепту понятия | Датасет |
| Среды и средства для приготовления рецепта: | R |
library(tidyverse)
## Как сделать pivot_wider для tidy данных
data_messy <- tribble(
~id, ~measurement, ~value,
"A", "bp1", 100,
"B", "bp1", 140,
"B", "bp2", 115,
"A", "bp2", 120,
"A", "bp3", 105
)
tidy_wide <- data_messy %>%
pivot_wider(names_from = measurement, values_from = value)
## Как сделать pivot_longer из wide в tidy
wide_data <- tribble(
~id, ~bp1, ~bp2,
"A", 100, 120,
"B", 140, 115
)
tidy_long <- wide_data %>%
pivot_longer(cols = starts_with("bp"),
names_to = "measurement",
values_to = "value")
tidy_long
###############
# Длинная форма: много строк на ученика (типично из дневников/логов)
data_long <- tribble(
~ученик, ~предмет, ~оценка,
"Анна", "Математика", 4,
"Анна", "Русский", 5,
"Борис", "Математика", 3,
"Борис", "Русский", 4,
"Вера", "Математика", 5,
"Вера", "Русский", NA_real_
)
# pivot_wider: поворот в широкую таблицу (сводка успеваемости)
wide_table <- data_long %>%
pivot_wider(names_from = предмет, values_from = оценка)
wide_table
long_table <- wide_table %>%
pivot_longer(cols = c("Математика", "Русский"),
names_to = "предмет",
values_to = "оценка")
long_table
