Анализ и визуализация данных на языке R

Основные типы данных

Лекция посвящена основам работы в языке программирования R, с фокусом на переход от командной строки к написанию R-скриптов. Слушатели знакомятся с основными типами данных: векторами (c), списками (list) и таблицами (data.frame). Особое внимание уделяется категориальным переменным (факторам) — номинальным и ординальным, а также принципам работы с векторами (индексация, срезы). В конце лекции демонстрируется создание плоской таблицы (data frame) как основного объекта для последующего анализа данных.

Основные мысли

1. R-скрипт удобнее командной строки: позволяет писать блоки кода целиком и исполнять их без немедленного вывода каждой команды.
2. Вектор — это основа: в R базовый тип данных — вектор (c), который всегда содержит элементы одного типа (числа, строки, логические значения).
3. Регистр и синтаксис имеют значение: R чувствителен к регистру (SubjectName ≠ subjectname); предпочтительнее использовать точку . в именах переменных, а не нижнее подчёркивание _.
4. Факторы (Factors) — это категории: переменные, принимающие значения из фиксированного набора (справочника). Бывают:
o Номинальные: нет порядка (например, пол: F/M).
o Ординальные: есть порядок (например, уровни образования: Diploma < BA < Master < PhD).
5. Data Frame — главный тип для анализа: это плоская таблица, объединяющая столбцы разных типов (аналог таблицы в Excel или SQL). Автоматическое преобразование текста в фактор нужно контролировать через параметр stringsAsFactors = FALSE.
Показывать лекцию целиком
Краткое изложение

Лектор начинает с того, что работа в консоли R неудобна для больших задач, поэтому переходит к созданию R-скрипта. Это позволяет писать и выполнять блоки кода целиком, наблюдая результат позже.

Создание векторов:
Subject.Name <- c("Jane", "Mike", "Peter") — вектор строк (тип character).
Age <- c(20, 56, 34) — вектор чисел (по умолчанию тип double, даже для целых).
Married <- c(FALSE, TRUE, TRUE) — логический вектор.
• Доступ к элементам: Subject.Name[2] (второй элемент), Age[2:3] (со второго по третий).

Факторы (категориальные переменные):
• Для пола (Gender): Gender <- factor(c("F", "M", "M")). R сам создаст справочник (уровни: "F", "M"). Это номинальная переменная (порядка нет).
• Для образования (Education): нужно задать все возможные уровни и указать порядок:

R

Education <- factor(c("BA", "Master", "PhD"),

                    levels = c("Diploma", "BA", "Master", "PhD"),

                    ordered = TRUE)

Это ординальная переменная (есть иерархия).

Списки (List) — разнородная строка:
• В отличие от вектора, список может содержать элементы разных типов. Это аналог «строки» в таблице.

R

Student <- list(Student.Name = Subject.Name[1],

                Student.Age = Age[1],

                Student.Education = Education[1])

Таблицы (Data Frame) — основной формат:
• Объединяет столбцы в единую таблицу. Важно отключить автоматическое превращение строк в факторы, если мы уже явно задали нужные факторы:

R

Student.Data <- data.frame(Subject.Name, Age, Married, Gender, Education,

                           stringsAsFactors = FALSE)

• Доступ к столбцам: Student.Data$Age (через $) или Student.Data[,1] (по индексу).
• Просмотр таблицы: View(Student.Data).

Выводы

1. Переход к скриптам — необходимый шаг для эффективной работы в R, позволяющий создавать воспроизводимый код.
2. Векторы в R всегда гомогенны (один тип данных). Попытка смешать типы приведет к автоматическому приведению к общему типу (например, числа станут строками).
3. Факторы незаменимы для работы с категориями, особенно в статистических моделях. Ординальные факторы позволяют учитывать порядок категорий (например, «низкий», «средний», «высокий»).
4. data.frame — это «рабочая лошадка» анализа данных. Понимание разницы между вектором (столбец), списком (строка) и таблицей (набор столбцов) критически важно.
5. Всегда контролируйте параметр stringsAsFactors. В современных версиях R по умолчанию FALSE, но в старом коде или старых версиях строки могли автоматически становиться факторами, что приводило к ошибкам.

Вопросы для самопроверки

1. В чем основное преимущество написания R-скрипта перед выполнением команд поочередно в консоли?
2. Что произойдет, если в один вектор (c()) поместить числа и строки? Какой тип будет у вектора?
3. Почему в лекции для переменной Subject.Name (имена) не использовали factor(), а для Gender (пол) — использовали?
4. Чем отличается номинальная переменная от ординальной? Приведите пример для каждой из них, основываясь на материале лекции.
5. Какая команда позволяет в data.frame отключить автоматическое преобразование текстовых колонок в факторы? Почему это иногда нужно делать?
6. Как обратиться к:
o Второму элементу вектора Age?
o Третьей строке и первому столбцу таблицы Student.Data?
o Столбцу Married через знак $?
7. Что означает запись ordered = TRUE при создании фактора и как она отображается при печати переменной?
Вернуться к учебному плану