Перейти до вмісту

R

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні
Версія від 20:10, 8 травня 2026, створена R (обговорення | внесок) (Створена сторінка: {{SEO |title=Мова програмування R — статистика, аналіз даних, візуалізація, data science і наукові обчислення |description=Мова програмування R — Wiki-стаття про мову й середовище для статистичних обчислень, аналізу даних, data science, візуалізації, машинного навчання та нау...)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)

SEO title: Мова програмування R — статистика, аналіз даних, візуалізація, data science і наукові обчислення SEO description: Мова програмування R — Wiki-стаття про мову й середовище для статистичних обчислень, аналізу даних, data science, візуалізації, машинного навчання та наукових досліджень. Розглянуто RStudio, CRAN, packages, data frames, vectors, factors, tidyverse, dplyr, ggplot2, Shiny, R Markdown, Quarto, статистичне моделювання, machine learning, переваги, обмеження і хороші практики. SEO keywords: мова програмування R, R programming language, R, статистика, аналіз даних, data science, наукові обчислення, RStudio, Posit, CRAN, tidyverse, dplyr, ggplot2, Shiny, R Markdown, Quarto, data frame, vector, factor, statistical computing, machine learning, visualization, регресія, статистичне моделювання, програмування Alternative to: ручний аналіз даних в Excel; статистичні розрахунки без коду; ручне створення графіків; ізольовані статистичні пакети без гнучкого програмування; одноразові аналітичні файли без відтворюваності; ручне формування звітів; закриті статистичні інструменти для задач, які можна автоматизувати в R


Мова програмування R

R — це мова програмування і середовище для статистичних обчислень, аналізу даних, візуалізації, data science, машинного навчання, наукових досліджень і підготовки відтворюваних аналітичних звітів.

R особливо популярна серед статистиків, аналітиків даних, дослідників, data scientists, біоінформатиків, економістів, соціологів, фінансових аналітиків і фахівців, які працюють із даними.

Основна ідея: R створена для роботи з даними: статистики, таблиць, моделей, графіків, досліджень і аналітичних звітів.

Загальний опис

Мова R використовується для задач, де потрібно аналізувати дані, будувати статистичні моделі, перевіряти гіпотези, створювати графіки, автоматизувати звіти або виконувати дослідницькі обчислення.

R добре підходить для:

  • статистичного аналізу;
  • exploratory data analysis;
  • очищення даних;
  • трансформації таблиць;
  • візуалізації;
  • регресійного аналізу;
  • часових рядів;
  • біостатистики;
  • соціологічних досліджень;
  • фінансового аналізу;
  • машинного навчання;
  • інтерактивних dashboard;
  • аналітичних звітів;
  • наукових публікацій;
  • reproducible research.

Перевага: R дозволяє поєднати аналіз даних, статистику, графіки й звітність в одному відтворюваному workflow.

Історія R

R виникла як реалізація ідей мови S, яка використовувалася для статистичних обчислень. З часом R стала відкритою мовою з великою спільнотою, пакунками CRAN і потужною екосистемою для аналізу даних.

R розвивалась навколо потреб:

  • статистиків;
  • науковців;
  • аналітиків;
  • дослідників;
  • викладачів;
  • data scientists;
  • фахівців із прикладних даних.

Важливо: R історично створювалася не як універсальна мова для всього, а як інструмент для статистики й аналізу даних. Саме тому її синтаксис і стандартні структури сильно орієнтовані на data analysis.

Для чого використовується R

Типові сценарії використання R:

  • аналіз таблиць;
  • статистичні тести;
  • регресія;
  • класифікація;
  • clustering;
  • time series analysis;
  • data visualization;
  • dashboard;
  • reporting;
  • автоматизація аналітики;
  • наукові дослідження;
  • обробка експериментальних даних;
  • аналіз опитувань;
  • фінансове моделювання;
  • біоінформатика;
  • економетрика.

Практична роль: R особливо сильна там, де потрібно швидко перейти від сирих даних до статистичного висновку, графіка або звіту.

Перша програма на R

Простий приклад:

message <- "Hello, world!"
print(message)

Запуск R-коду можливий:

  • у R console;
  • у RStudio;
  • у Positron;
  • у Jupyter Notebook;
  • через Rscript;
  • у R Markdown або Quarto.

Суть прикладу: R дозволяє швидко виконувати команди й одразу бачити результат, що зручно для дослідження даних.

RStudio і Posit

RStudio — популярне інтегроване середовище розробки для R. Його розвиває компанія Posit.

RStudio використовується для:

  • написання R-коду;
  • запуску команд;
  • перегляду таблиць;
  • побудови графіків;
  • роботи з packages;
  • створення R Markdown;
  • debugging;
  • роботи з Git;
  • створення Shiny-застосунків;
  • підготовки аналітичних звітів.

Практична роль: RStudio зробила роботу з R зручнішою для аналітиків, дослідників і data scientists.

CRAN

CRAN або Comprehensive R Archive Network — це головний репозиторій пакетів R.

Через CRAN встановлюють пакети:

install.packages("ggplot2")

Підключення пакета:

library(ggplot2)

CRAN містить пакети для:

  • статистики;
  • візуалізації;
  • машинного навчання;
  • роботи з даними;
  • звітності;
  • часових рядів;
  • біоінформатики;
  • економетрики;
  • геоданих;
  • web apps.

Перевага CRAN: екосистема пакетів R дуже широка, особливо для статистики, науки й прикладного аналізу даних.

Packages

Package у R — це набір функцій, даних, документації й іноді compiled code.

Пакети використовуються для:

  • розширення можливостей R;
  • роботи з конкретними форматами даних;
  • статистичного аналізу;
  • створення графіків;
  • побудови моделей;
  • підготовки звітів;
  • створення вебзастосунків;
  • інтеграцій із базами даних або API.

Приклад:

install.packages("dplyr")
library(dplyr)

Порада: у production або командних проєктах важливо фіксувати версії пакетів, щоб аналіз залишався відтворюваним.

Змінні

У R змінні зазвичай створюються через оператор `<-`.

Приклад:

x <- 10
name <- "Alice"
active <- TRUE

Також можна використовувати `=`, але в R-культурі для присвоєння часто застосовують `<-`.

Суть змінної: змінна в R зберігає об’єкт: число, текст, вектор, таблицю, модель або інший результат обчислення.

Типи даних

Основні типи даних у R:

  • numeric;
  • integer;
  • character;
  • logical;
  • factor;
  • Date;
  • POSIXct;
  • vector;
  • matrix;
  • array;
  • list;
  • data frame;
  • tibble.

Приклад:

age <- 25
price <- 19.99
name <- "Alice"
is_active <- TRUE

Практична роль: R має типи й структури, які дуже зручні саме для табличних і статистичних задач.

Vector

Vector — базова структура даних у R.

Вектор містить елементи одного типу.

Приклад:

numbers <- c(1, 2, 3, 4, 5)
numbers * 2

R підтримує vectorized operations, тобто операції над усім вектором одразу.

Результат:

2 4 6 8 10

Суть vectorization: у R часто не потрібно писати цикл для кожного елемента — операція може застосовуватися до всього вектора.

Matrix

Matrix — це двовимірна структура, де всі елементи мають один тип.

Приклад:

m <- matrix(1:6, nrow = 2, ncol = 3)
print(m)

Matrix використовується для:

  • лінійної алгебри;
  • статистики;
  • числових обчислень;
  • моделювання;
  • матричних операцій.

Практична роль: matrix зручна для числових обчислень, але для реальних таблиць із різними типами частіше використовують data frame.

List

List — структура, яка може містити елементи різних типів.

Приклад:

user <- list(
  name = "Alice",
  age = 25,
  scores = c(90, 85, 88)
)

print(user$name)

List часто використовується для:

  • складних об’єктів;
  • результатів моделей;
  • nested data;
  • API-відповідей;
  • параметрів;
  • збереження кількох результатів разом.

Важливо: багато об’єктів у R, зокрема результати моделей, фактично є списками зі структурованими компонентами.

Data frame

Data frame — одна з найважливіших структур у R. Це таблиця, де колонки можуть мати різні типи.

Приклад:

users <- data.frame(
  name = c("Alice", "Bob", "Carol"),
  age = c(25, 30, 28),
  active = c(TRUE, FALSE, TRUE)
)

print(users)

Data frame використовується для:

  • табличних даних;
  • CSV;
  • результатів SQL-запитів;
  • статистичного аналізу;
  • побудови моделей;
  • візуалізації;
  • звітності.

Головна структура R: data frame — це базовий формат для більшості задач аналізу даних.

Tibble

Tibble — сучасніша версія data frame з tidyverse.

Приклад:

library(tibble)

users <- tibble(
  name = c("Alice", "Bob", "Carol"),
  age = c(25, 30, 28)
)

print(users)

Tibble має зручніший друк, кращу поведінку з типами й частіше використовується в tidyverse.

Практична роль: tibble зручна для сучасного R-коду, особливо разом із dplyr і ggplot2.

Factor

Factor — тип даних для категоріальних змінних.

Приклад:

status <- factor(c("new", "active", "blocked", "active"))
print(status)

Factors використовуються для:

  • категорій;
  • груп;
  • рівнів;
  • статистичних моделей;
  • ordered categories;
  • графіків;
  • analysis of variance.

Увага: factors можуть бути дуже корисними в статистиці, але неправильне перетворення character ↔ factor може створювати помилки в аналізі.

NA

NA означає відсутнє значення.

Приклад:

values <- c(10, 20, NA, 40)

mean(values)
mean(values, na.rm = TRUE)

У R потрібно явно враховувати missing values.

Критично: пропущені значення можуть змінити результат аналізу. Їх потрібно виявляти, пояснювати й обробляти.

Функції

Функції в R створюються через `function`.

Приклад:

add <- function(a, b) {
  a + b
}

result <- add(2, 3)
print(result)

Функції потрібні для:

  • повторного використання коду;
  • автоматизації аналізу;
  • створення власних обчислень;
  • зменшення дублювання;
  • тестування;
  • побудови пакетів.

Суть функції: у R функції дозволяють перетворити одноразовий аналіз на повторюваний інструмент.

Умови

Умовні конструкції в R:

age <- 20

if (age >= 18) {
  print("Adult")
} else {
  print("Minor")
}

Для векторних умов часто використовують `ifelse`:

ages <- c(15, 20, 30)
groups <- ifelse(ages >= 18, "adult", "minor")
print(groups)

Практична роль: у R важливо відрізняти одну умову для програми від векторної умови для багатьох значень.

Цикли

R підтримує класичні цикли.

Приклад `for`:

for (i in 1:5) {
  print(i)
}

Приклад `while`:

count <- 3

while (count > 0) {
  print(count)
  count <- count - 1
}

Однак у R часто використовують vectorization або функції на кшталт `lapply`, `sapply`, `purrr::map`.

Важливо: у R не завжди потрібно писати цикли. Часто векторизовані операції або tidyverse-підхід роблять код коротшим і зрозумілішим.

apply-сімейство

R має функції для застосування операцій до структур даних.

Приклади:

  • `apply`;
  • `lapply`;
  • `sapply`;
  • `tapply`;
  • `mapply`.

Приклад:

items <- list(1:3, 4:6, 7:9)

result <- lapply(items, mean)
print(result)

Практична роль: apply-функції допомагають обробляти списки, матриці й групи даних без явного циклу.

Tidyverse

Tidyverse — це набір R-пакетів для сучасної роботи з даними.

До tidyverse належать:

  • `ggplot2`;
  • `dplyr`;
  • `tidyr`;
  • `readr`;
  • `purrr`;
  • `tibble`;
  • `stringr`;
  • `forcats`.

Tidyverse орієнтований на:

  • читабельний код;
  • pipe workflow;
  • tidy data;
  • трансформацію таблиць;
  • візуалізацію;
  • імпорт даних;
  • роботу з текстом;
  • функціональну обробку.

Головна перевага tidyverse: він дає цілісний, зручний і читабельний стиль роботи з даними.

Pipe operator

Pipe operator дозволяє передавати результат одного кроку в наступний.

У tidyverse часто використовується `%>%`:

library(dplyr)

result <- mtcars %>%
  filter(cyl == 6) %>%
  summarise(avg_mpg = mean(mpg))

print(result)

У сучасному R також є base pipe `|>`:

result <- mtcars |>
  subset(cyl == 6)

Суть pipe: pipe дозволяє читати обробку даних як послідовність кроків зверху вниз.

dplyr

dplyr — пакет для трансформації таблиць.

Основні функції:

  • `filter`;
  • `select`;
  • `mutate`;
  • `arrange`;
  • `summarise`;
  • `group_by`;
  • `left_join`;
  • `inner_join`;
  • `bind_rows`.

Приклад:

library(dplyr)

summary <- mtcars %>%
  group_by(cyl) %>%
  summarise(
    avg_mpg = mean(mpg),
    count = n()
  )

print(summary)

Практична роль: dplyr є одним із головних інструментів R для очищення, групування й трансформації табличних даних.

tidyr

tidyr — пакет для приведення даних до tidy format.

Основні задачі:

  • розгортання колонок;
  • збирання колонок;
  • робота з missing values;
  • nesting;
  • unnesting;
  • перетворення wide ↔ long.

Приклад:

library(tidyr)

long_data <- pivot_longer(
  data,
  cols = starts_with("year_"),
  names_to = "year",
  values_to = "value"
)

Практична порада: правильна форма таблиці часто спрощує і аналіз, і графіки, і моделювання.

ggplot2

ggplot2 — один із найвідоміших пакетів R для візуалізації даних.

Він базується на grammar of graphics.

Приклад:

library(ggplot2)

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point() +
  labs(
    title = "Залежність витрати пального від ваги",
    x = "Вага",
    y = "Miles per gallon"
  )

ggplot2 використовується для:

  • scatter plots;
  • line charts;
  • bar charts;
  • histograms;
  • boxplots;
  • density plots;
  • facets;
  • statistical graphics;
  • publication-quality charts.

Перевага ggplot2: графік будується як набір шарів, тому його легко поступово ускладнювати й налаштовувати.

readr і readxl

readr використовується для швидкого читання текстових таблиць.

Приклад:

library(readr)

data <- read_csv("data.csv")

readxl використовується для читання Excel-файлів.

Приклад:

library(readxl)

data <- read_excel("report.xlsx")

Практична роль: R часто починає аналітичний workflow із імпорту CSV, Excel, бази даних або API.

stringr

stringr — пакет tidyverse для роботи з текстом.

Приклади задач:

  • пошук pattern;
  • заміна тексту;
  • розділення рядків;
  • об’єднання тексту;
  • зміна регістру;
  • регулярні вирази;
  • очищення текстових колонок.

Приклад:

library(stringr)

names <- c(" Alice ", " Bob ")
clean_names <- str_trim(names)
print(clean_names)

Практична роль: stringr допомагає чистити й обробляти текстові дані в таблицях.

lubridate

lubridate — пакет для роботи з датами й часом.

Приклад:

library(lubridate)

date <- ymd("2026-05-08")
month(date)
year(date)

lubridate корисний для:

  • парсингу дат;
  • виділення року, місяця, дня;
  • роботи з timezone;
  • обчислення періодів;
  • аналізу часових даних;
  • time series preprocessing.

Практична роль: lubridate робить роботу з датами в R значно зручнішою.

Статистика в R

R має потужні можливості статистики з коробки.

Базові статистичні функції:

  • `mean`;
  • `median`;
  • `sd`;
  • `var`;
  • `summary`;
  • `quantile`;
  • `cor`;
  • `t.test`;
  • `chisq.test`;
  • `aov`;
  • `lm`;
  • `glm`.

Приклад:

values <- c(10, 20, 30, 40, 50)

mean(values)
sd(values)
summary(values)

Головна сила R: статистичні функції є природною частиною мови й екосистеми.

Регресія

R широко використовується для регресійного аналізу.

Лінійна регресія:

model <- lm(mpg ~ wt + cyl, data = mtcars)
summary(model)

У цьому прикладі модель прогнозує `mpg` за змінними `wt` і `cyl`.

Регресія використовується для:

  • прогнозування;
  • пояснення залежностей;
  • статистичного висновку;
  • економетрики;
  • аналізу факторів;
  • перевірки гіпотез.

Практична роль: R робить статистичне моделювання дуже доступним через формули на кшталт `y ~ x1 + x2`.

Формули в R

Формули — важлива частина статистичного синтаксису R.

Приклад:

y ~ x1 + x2

Це означає: змінна `y` моделюється через `x1` і `x2`.

Приклади:

mpg ~ wt
mpg ~ wt + cyl
mpg ~ wt * cyl
mpg ~ .

Важливо: формульний синтаксис R дуже зручний, але потрібно розуміти, що означають `+`, `*`, `:` і `.` у контексті моделей.

Machine Learning у R

R використовується для машинного навчання.

Пакети й підходи:

  • `caret`;
  • `tidymodels`;
  • `randomForest`;
  • `xgboost`;
  • `ranger`;
  • `e1071`;
  • `glmnet`;
  • `nnet`;
  • `keras`;
  • `torch`;
  • `mlr3`.

Задачі:

  • classification;
  • regression;
  • clustering;
  • feature engineering;
  • cross-validation;
  • hyperparameter tuning;
  • model evaluation;
  • explainability.

Практична роль: R добре підходить для класичного machine learning, особливо коли важлива статистична інтерпретація й аналіз даних.

tidymodels

tidymodels — сучасна екосистема R для machine learning у стилі tidyverse.

Вона включає пакети для:

  • preprocessing;
  • recipes;
  • model specification;
  • resampling;
  • tuning;
  • workflows;
  • metrics;
  • evaluation.

Приклад напрямів:

  • `parsnip`;
  • `recipes`;
  • `workflows`;
  • `rsample`;
  • `yardstick`;
  • `tune`.

Перевага tidymodels: вона дає єдиний і tidy-style підхід до побудови, навчання й оцінювання моделей.

Time series

R часто використовують для аналізу часових рядів.

Типові задачі:

  • прогнозування продажів;
  • аналіз сезонності;
  • тренди;
  • згладжування;
  • ARIMA;
  • ETS;
  • Prophet;
  • фінансові ряди;
  • економічні показники;
  • моніторинг метрик.

Пакети:

  • `forecast`;
  • `fable`;
  • `tsibble`;
  • `zoo`;
  • `xts`;
  • `prophet`.

Практична роль: R має сильну екосистему для часових рядів, прогнозування й економетричного аналізу.

Shiny

Shiny — фреймворк для створення інтерактивних web-застосунків і dashboard на R.

Shiny дозволяє:

  • створювати інтерактивні графіки;
  • робити фільтри;
  • будувати dashboard;
  • публікувати моделі;
  • давати бізнес-користувачам доступ до аналізу;
  • створювати data apps без повноцінного frontend-фреймворку.

Простий приклад:

library(shiny)

ui <- fluidPage(
  sliderInput("n", "Кількість:", 1, 100, 50),
  plotOutput("plot")
)

server <- function(input, output) {
  output$plot <- renderPlot({
    hist(rnorm(input$n))
  })
}

shinyApp(ui, server)

Перевага Shiny: аналітик може перетворити R-аналіз на інтерактивний застосунок без окремої frontend-розробки.

R Markdown

R Markdown дозволяє поєднувати текст, R-код, графіки й результати в одному документі.

Використовується для:

  • звітів;
  • наукових документів;
  • презентацій;
  • навчальних матеріалів;
  • автоматичних dashboard;
  • reproducible research;
  • аналітичної документації.

Фрагмент:

<syntaxhighlight lang="markdown"> ```{r} summary(mtcars)