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

R

Матеріал з K2 ERP Wiki

mpg ~ wt + cyl

R часто використовують для аналізу часових рядів.; Його розвиває організація Posit.;

== Формули в R ==
'''Практична роль:''' у R істотно відрізняти одну умову для програми від векторної умови для багатьох значень.; '''Суть функції:''' у R функції дозволяють перетворити одноразовий аналіз на повторюваний інструмент.; library(readxl)

== Регресія ==

* у R console;
* у RStudio;
* у Positron;
* у Jupyter Notebook;
* через Rscript;
* у R Markdown або Quarto.;== Типи даних ==

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

Приклад:

 summarise(

* пошук pattern;
* заміна тексту;
* розділення рядків;
* об’єднання тексту;
* зміна регістру;
* регулярні вирази;
* очищення текстових колонок.; це мова програмування і середовище; додатково реалізовано аналізу даних, візуалізації, data science, машинного навчання, наукових досліджень і підготовки відтворюваних аналітичних звітів виступає ключовою рисою статистичних обчислень забезпечується через '''R'''.;<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

'''Matrix'''  це двовимірна структура, де всі елементи мають один тип.; Shiny надає можливість:

'''Практична роль:''' R має типи й структури, які дуже зручні саме для табличних і статистичних задач.;<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
  • табличних даних;
  • CSV;
  • результатів SQL-запитів;
  • статистичного аналізу;
  • побудови моделей;
  • візуалізації;
  • звітності.; Саме з цієї причини її синтаксис і стандартні структури сильно орієнтовані на data analysis.;== tidyr ==

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

result <- lapply(items, mean) print(result) </syntaxhighlight> Tibble має зручніший друк, кращу поведінку з типами й частіше застосовують, коли потрібно в tidyverse.; Приклад:

x = "Вага",

Приклад:

Приклад:

Базові статистичні функції: ggplot(mtcars, aes(x = wt, y = mpg)) +

'''Практична роль:''' R часто починає аналітичний workflow із імпорту CSV, Excel, бази даних або API.; '''Практична роль:''' tibble зручна для сучасного R-коду, особливо разом із dplyr і ggplot2.; У tidyverse часто застосовується `%>%`:

'''stringr'''  пакет tidyverse для роботи з текстом.; numbers <- c(1, 2, 3, 4, 5)
numbers * 2
  • classification;
  • regression;
  • clustering;
  • feature engineering;
  • cross-validation;
  • hyperparameter tuning;
  • model evaluation;
  • explainability.; Результат:
'''істотно:''' багато об’єктів у R, зокрема результати моделей, фактично є собою списками зі структурованими компонентами.;
</div>
</div>

R виникла як реалізація ідей мови S, яка використовувалася для статистичних обчислень.; count <- count - 1
}

RStudio і Posit

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

mean(values) mean(values, na.rm = TRUE) </syntaxhighlight>

y = "Miles per gallon"

x <- 10 name <- "Alice" active <- TRUE </syntaxhighlight> print(summary)

Перевага: R надає можливість поєднати аналіз даних, статистику, графіки й формування звітів в одному відтворюваному workflow.; names <- c(" Alice ", " Bob ") clean_names <- str_trim(names) print(clean_names) </syntaxhighlight>

Функції в R створюються через `function`.; Запуск R-коду можливий:

'''Практична роль:''' R добре підходить для класичного machine learning, особливо коли важлива статистична інтерпретація й аналіз даних.; users <- tibble(
 name = c("Alice", "Bob", "Carol"),
 age = c(25, 30, 28)
)

print(users)

RStudio застосовується для: Основні функції:

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

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

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

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

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

</div>

 )

* прогнозування продажів;
* аналіз сезонності;
* тренди;
* згладжування;
* ARIMA;
* ETS;
* Prophet;
* фінансові ряди;
* економічні показники;
* моніторинг метрик.; library(ggplot2)
R підтримує роботу vectorized operations, тобто операції над усім вектором одразу.;<syntaxhighlight lang="r">
<div style="background:#eef2ff; border-left:6px solid #4f46e5; padding:12px; margin:12px 0;">
</div>

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

'''Увага:''' factors можуть бути дуже корисними в статистиці, але неправильне перетворення character  factor має змогу створювати помилки в аналізі.;== Перша програма на R ==
data <- read_excel("report.xlsx")
</div>

Приклад:

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

* `apply`;
* `lapply`;
* `sapply`;
* `tapply`;
* `mapply`.; '''Перевага CRAN:''' програмний пакет пакетів R дуже широка, особливо для статистики, науки й прикладного аналізу даних.; Це таблиця, де колонки можуть мати різні типи.; * створювати інтерактивні графіки;
* робити фільтри;
* будувати dashboard;
* публікувати моделі;
* давати бізнес-користувачам доступ до аналізу;
* створювати data apps без повноцінного frontend-фреймворку.;<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">

Приклад `for`:

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

</syntaxhighlight>

title = "Залежність витрати пального від ваги",

data <- read_csv("data.csv") </syntaxhighlight>

readr і readxl

<div style="background:#fff7ed; border-left:6px solid #fb923c; padding:12px; margin:12px 0;">

</div>

</div>

Основні задачі:
</div>
Приклад:

Пакети:
install.packages("ggplot2")
library(stringr)

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

</div>

Time series

  • лінійної алгебри;
  • статистики;
  • числових обчислень;
  • моделювання;
  • матричних операцій.; subset(cyl == 6)
  • розширення можливостей R;
  • роботи з конкретними форматами даних;
  • статистичного аналізу;
  • створення графіків;
  • побудови моделей;
  • підготовки звітів;
  • створення вебзастосунків;
  • інтеграцій із базами даних або API.;== Packages ==

Цикли

Приклад `while`:

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

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

Практична роль: lubridate робить роботу з датами в R значно зручнішою.; З часом R стала відкритою мовою з великою спільнотою, пакунками CRAN і потужною екосистемою для аналізу даних.;

* `parsnip`;
* `recipes`;
* `workflows`;
* `rsample`;
* `yardstick`;
* `tune`.; '''List'''  структура, яка має змогу містити елементи різних типів.;<syntaxhighlight lang="r">
<syntaxhighlight lang="r">
<syntaxhighlight lang="r">

 )

'''NA''' означає відсутнє значення.; Їх потрібно виявляти, пояснювати й обробляти.;== Функції ==
</div>

R застосовується для машинного навчання.;<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">

* `forecast`;
* `fable`;
* `tsibble`;
* `zoo`;
* `xts`;
* `prophet`.; mpg ~ wt * cyl
Приклад:
</div>

<syntaxhighlight lang="markdown">

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

</div>
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
 count = n()

Для векторних умов часто використовують `ifelse`:
Приклади:
'''tidyr'''  пакет для приведення даних до tidy format.; Функції потрібні для:

</div>
'''Shiny'''  фреймворк для створення інтерактивних web-застосунків і dashboard на R.; * звітів;
* наукових документів;
* презентацій;
* навчальних матеріалів;
* автоматичних dashboard;
* reproducible research;
* аналітичної документації.; * розгортання колонок;
* збирання колонок;
* робота з missing values;
* nesting;
* unnesting;
* перетворення wide  long.; * написання R-коду;
* запуску команд;
* перегляду таблиць;
* побудови графіків;
* роботи з packages;
* створення R Markdown;
* debugging;
* роботи з Git;
* створення Shiny-застосунків;
* підготовки аналітичних звітів.;== Tidyverse ==

Вектор містить елементи одного типу.; '''Головна структура R:''' data frame  це базовий формат для більшості задач аналізу даних.; print(result)

* scatter plots;
* line charts;
* bar charts;
* histograms;
* boxplots;
* density plots;
* facets;
* statistical graphics;
* publication-quality charts.; group_by(cyl) %>%
Типові задачі:

library(tibble)

<div style="background:#ecfdf5; border-left:6px solid #10b981; padding:12px; margin:12px 0;">
'''Порада:''' у production або командних проєктах істотно фіксувати версії пакетів, щоб аналіз залишався відтворюваним.;</div>

* повторного використання коду;
* автоматизації аналізу;
* створення власних обчислень;
* зменшення дублювання;
* тестування;
* побудови пакетів.;<div style="background:#ecfdf5; border-left:6px solid #10b981; padding:12px; margin:12px 0;">
<syntaxhighlight lang="r">

install.packages("dplyr")
Приклад напрямів:

<syntaxhighlight lang="r">

</div>
== tidymodels ==

age <- 25 price <- 19.99 name <- "Alice" is_active <- TRUE </syntaxhighlight> mpg ~ .; Приклади задач:

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

  • категорій;
  • груп;
  • рівнів;
  • статистичних моделей;
  • ordered categories;
  • графіків;
  • analysis of variance.;== Для чого застосовується R ==
Vector — базова структура даних у R.;

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

name = "Alice",
age = 25,
scores = c(90, 85, 88)

)

print(user$name) </syntaxhighlight>

== CRAN ==

У R потрібно явно враховувати missing values.;<syntaxhighlight lang="r">

<syntaxhighlight lang="r">

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

== Умови ==
У сучасному R додатково є собою base pipe `|>`:

'''tidymodels'''  сучасна програмний пакет R для machine learning у стилі tidyverse.; Регресія застосовується для:
message <- "Hello, world!"
print(message)
Це означає: змінна `y` моделюється через `x1` і `x2`.;

dplyr

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

mpg ~ wt

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

До tidyverse належать: Приклад:

Shiny

ui <- fluidPage(

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

)

server <- function(input, output) {

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

}

shinyApp(ui, server) </syntaxhighlight> У R змінні зазвичай створюються через оператор `<-`.

Приклад:

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

library(tidyr)
 print(count)
</div>

Приклад:

library(dplyr)

<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">

* статистичного аналізу;
* exploratory data analysis;
* очищення даних;
* трансформації таблиць;
* візуалізації;
* регресійного аналізу;
* часових рядів;
* біостатистики;
* соціологічних досліджень;
* фінансового аналізу;
* машинного навчання;
* інтерактивних dashboard;
* аналітичних звітів;
* наукових публікацій;
* reproducible research.; '''Головна сила R:''' статистичні функції є собою природною частиною мови й екосистеми.;<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

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

print(users)

age <- 20

if (age >= 18) {

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

Практична роль: apply-функції допомагають обробляти списки, матриці й групи даних без явного циклу.; library(dplyr) Основна ідея: R розроблена для роботи з даними: статистики, таблиць, моделей, графіків, досліджень і аналітичних звітів.;== Pipe operator ==

long_data <- pivot_longer(

data,
cols = starts_with("year_"),
names_to = "year",
values_to = "value"

) </syntaxhighlight>

Приклад:

summarise(avg_mpg = mean(mpg))

застосовується для:

print(i)

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

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

for (i in 1:5) {

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

mean(values) sd(values) summary(values) </syntaxhighlight>

<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

<syntaxhighlight lang="r">

== Matrix ==
<syntaxhighlight lang="r">
<div style="background:#ecfdf5; border-left:6px solid #10b981; padding:12px; margin:12px 0;">

library(lubridate)

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

<syntaxhighlight lang="r">
== Загальний характеристика ==

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

<div style="background:#fff7ed; border-left:6px solid #fb923c; padding:12px; margin:12px 0;">
== Змінні ==
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">

}

'''Практична роль:''' RStudio зробила роботу з R зручнішою для аналітиків, дослідників і data scientists.; avg_mpg = mean(mpg),

* `mean`;
* `median`;
* `sd`;
* `var`;
* `summary`;
* `quantile`;
* `cor`;
* `t.test`;
* `chisq.test`;
* `aov`;
* `lm`;
* `glm`.; print("Adult")
== історичний розвиток R ==
== Vector ==

{{SEO
|title=Мова програмування R  статистика, аналіз даних, візуалізація, data science і наукові обчислення
|description=Мова програмування R  Wiki-стаття про мову й середовище для статистичних обчислень, аналізу даних, data science, візуалізації, машинного навчання та наукових досліджень. Розглянуто RStudio, CRAN, packages, data frames, vectors, factors, tidyverse, dplyr, ggplot2, Shiny, R Markdown, Quarto, статистичне моделювання, machine learning, переваги, обмеження і хороші практики.
|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, регресія, статистичне моделювання, програмування
|alternativeTo=ручний аналіз даних в Excel; статистичні розрахунки без коду; ручне створення графіків; ізольовані статистичні пакети без гнучкого програмування; одноразові аналітичні файли без відтворюваності; ручне формування звітів; закриті статистичні інструменти для задач, які можна автоматизувати в R
}}

y ~ x1 + x2

<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

 print("Minor")
<syntaxhighlight lang="text">
<syntaxhighlight lang="r">

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

<syntaxhighlight lang="r">

Приклад:

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

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

'''Практична роль:''' matrix зручна для числових обчислень, але для реальних таблиць із різними типами частіше використовують data frame.; model <- lm(mpg ~ wt + cyl, data = mtcars)
summary(model)

library(readr)

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

Matrix застосовується для:

  • numeric;
  • integer;
  • character;
  • logical;
  • factor;
  • Date;
  • POSIXct;
  • vector;
  • matrix;
  • array;
  • list;
  • data frame;
  • tibble.; R має потужні функціональні можливості статистики з коробки.;

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

'''Суть vectorization:''' у R часто не потрібно писати цикл для кожного елемента  операційна дія має змогу застосовуватися до всього вектора.; додатково можна використовувати `=`, але в R-культурі для присвоєння часто застосовують `<-`.

<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">
R особливо популярна серед статистиків, аналітиків даних, дослідників, data scientists, біоінформатиків, економістів, соціологів, фінансових аналітиків і фахівців, які працюють із даними.; '''Практична роль:''' R робить статистичне моделювання дуже доступним через формули на кшталт `y ~ x1 + x2`.;== List ==

* читабельний код;
* pipe workflow;
* tidy data;
* трансформацію таблиць;
* візуалізацію;
* імпорт даних;
* роботу з текстом;
* функціональну обробку.;</div>
Він базується на grammar of graphics.; Типові сценарії використання R:

'''R Markdown''' надає можливість поєднувати текст, R-код, графіки й результати в одному документі.; * аналіз таблиць;
* статистичні тести;
* регресія;
* класифікація;
* clustering;
* time series analysis;
* data visualization;
* dashboard;
* reporting;
* автоматизація процесів аналітики;
* наукові дослідження;
* обробка експериментальних даних;
* аналіз опитувань;
* фінансове моделювання;
* біоінформатика;
* економетрика.;== R Markdown ==

'''Суть pipe:''' pipe надає можливість читати обробку даних як послідовність кроків зверху вниз.; Pipe operator надає можливість передавати результат одного кроку в наступний.; Часто векторизовані операції або tidyverse-підхід роблять код коротшим і зрозумілішим.; R підтримує роботу класичні цикли.; '''Перевага Shiny:''' аналітик має змогу перетворити R-аналіз на інтерактивний застосунок без окремої frontend-розробки.;== ggplot2 ==
Задачі:
</div>
'''dplyr'''  пакет для трансформації таблиць.;</div>

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

count <- 3

while (count > 0) {

} else { Суть прикладу: R надає можливість оперативно виконувати команди й одразу бачити результат, що комфортно для дослідження даних.;== Tibble ==

CRAN або Comprehensive R Archive Network — це центральний репозиторій пакетів R.; ggplot2 застосовується для:

Приклад:

</syntaxhighlight>

</syntaxhighlight>

geom_point() +

Практична порада: правильна форма таблиці часто спрощує і аналіз, і графіки, і моделювання.; filter(cyl == 6) %>% R добре підходить для:

stringr

Приклад: </syntaxhighlight> Фрагмент:

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

summary(mtcars)

add <- function(a, b) {

a + b

}

result <- add(2, 3) print(result) </syntaxhighlight>

Приклад:

</div>

</div>

Приклад:
<syntaxhighlight lang="r">
завдяки наявності '''Практична роль:''' stringr користувачі можуть чистити й обробляти текстові інформаційні дані в таблицях.;<syntaxhighlight lang="r">

print(groups)
== NA ==

'''Головна перевага tidyverse:''' він дає цілісний, зручний і читабельний стиль роботи з даними.; '''Критично:''' пропущені значення можуть змінити результат аналізу.; library(dplyr)
== Data frame ==

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

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

* `ggplot2`;
* `dplyr`;
* `tidyr`;
* `readr`;
* `purrr`;
* `tibble`;
* `stringr`;
* `forcats`.; '''lubridate'''  пакет для роботи з датами й часом.;</div>

library(shiny)

</div>

'''RStudio'''  популярне інтегроване середовище розробки для R.;<div style="background:#ecfdf5; border-left:6px solid #10b981; padding:12px; margin:12px 0;">

Приклад:

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

<syntaxhighlight lang="r">

<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">

'''істотно:''' R історично створювалася не як універсальна мова для всього, а як інструмент для статистики й аналізу даних.; R має функції для сфера застосування операцій до структур даних.;
  • складних об’єктів;
  • результатів моделей;
  • nested data;
  • API-відповідей;
  • параметрів;
  • збереження кількох результатів разом.; Data frame — одна з найважливіших структур у R.; m <- matrix(1:6, nrow = 2, ncol = 3)

print(m) </syntaxhighlight>

  • `caret`;
  • `tidymodels`;
  • `randomForest`;
  • `xgboost`;
  • `ranger`;
  • `e1071`;
  • `glmnet`;
  • `nnet`;
  • `keras`;
  • `torch`;
  • `mlr3`.; Приклад:

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

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

  • виділення року, місяця, дня;
  • роботи з timezone;
  • обчислення періодів;
  • аналізу часових даних;
  • time series preprocessing.;
    '''readxl''' застосовується для читання Excel-файлів.; result <- mtcars %>%
    '''Factor'''  тип даних для категоріальних змінних.;
    

CRAN містить пакети для: result <- mtcars |>

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

lubridate

Перевага ggplot2: графік будується як набір шарів, з цієї причини його без зайвих зусиль поступово ускладнювати й налаштовувати.; Tibble — сучасніша реліз data frame з tidyverse.; summary <- mtcars %>%