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)