3 tidyverse
: Загрузка и трансформация данных
tidyverse — это набор пакетов:
- ggplot2, для визуализации
- tibble, для работы с тибблами, современный вариант датафрейма
- tidyr, для формата tidy data
- readr, для чтения файлов в R
- purrr, для функционального программирования
- dplyr, для преобразованиия данных
- stringr, для работы со строковыми переменными
- forcats, для работы с переменными-факторами
Полезно также знать о следующих:
- readxl, для чтения .xls и .xlsx
- jsonlite, для работы с JSON
- rvest, для веб-скреппинга
- lubridate, для работы с временем
- tidytext, для работы с текстами и корпусами
- broom, для перевода в tidy формат статистические модели
## ── Attaching packages ──────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2 ✓ purrr 0.3.4
## ✓ tibble 3.0.3 ✓ dplyr 1.0.2
## ✓ tidyr 1.1.2 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ─────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
3.1 Загрузка данных
3.1.1 Рабочая директория
Все в R происходит где-то. Нужно загружать файлы с данными, нужно их куда-то сохранять. Желательно иметь для каждого проекта некоторую отдельную папку на компьютере, куда складывать все, отнсящееся к этому проекту. Две команды позволят опредить текущую рабочую дерикторию (getwd()
) и (setwd(.../path/to/your/directory)
).
3.1.2 Форматы данных: .csv
Существет много форматов данных, которые придумали люди. Большинство из них можно загрузить в R. Так как центральный объект в R – таблица \(n \times k\), то и работать мы большую часть времени будем с таблицами. Наиболее распространенные способы хранить данные сейчас это .csv
(разберем в данном разделе) и .json
(разберем в разделе (???){lists}).
.csv
(comma separated values) – является обычным текстовым файлом, в котором перечислены значения с некоторым фиксированным разделителем: запятой, табуляцией, точка с запятой, пробел и др. Такие файлы обычно легко открывает LibreOffice, а в Microsoft Excel нужны некоторые трюки.
3.1.3 Загрузка данных: readr, readxl
Стандартной функцией для чтения .csv
файлов в R является функция read.csv()
, но мы будем использовать функцию read_csv()
из пакета readr
.
Вместо многоточия может стоять:
- название файла (если он, есть в текущей рабочей дериктории)
- относительный путь к файлу (если он, верен для текущей рабочей дериктории)
- полный путь к файлу (если он, верен для текущей рабочей дериктории)
- интернет ссылка (тогда, компьютер должен быть подключен к интернету)
Для чтения других форматов .csv
файлов используются другие функции:
read_tsv()
– для файлов с табуляцией в качестве разделителяread_csv2()
– для файлов с точкой с запятой в качестве разделителяread_delim(file = "...", delim = "...")
– для файлов с любым разделителем, задаваемым аргументомdelim
Стандартной практикой является создавать первой строкой .csv
файлов названия столбцов, поэтому по умолчанию функции read_...()
будут создавать таблицу, считая первую строку названием столбцов. Чтобы изменить это поведение следует использовать аргумент col_names = FALSE
.
Другая проблема при чтении файлов – кодировка и локаль. На разных компьютерах разные локали и дефолтные кодировки, так что имеет смысл знать про аргумент locale(encoding = "UTF-8")
.
Попробуйте корректно считать в R файл по этой ссылке.
Благодаря readxl
пакету Также данные можно скачать напрямую из файлов .xls
(функция read_xls
) и .xlsx
(функция read_xlsx
), однако эти функции не умеют читать из интернета.
Существует еще один экстравагантный способ хранить данные: это формат файлов R .RData
. Создадим data.frame:
Теперь можно сохранить файл…
удалить переменную…
## Error in eval(expr, envir, enclos): object 'my_df' not found
и загрузить все снова:
3.1.3.1 Misspelling dataset
Этот датасет я переработал из данных, собранных для статьи The Gyllenhaal Experiment, написанной Расселом Гольденбергом и Мэттом Дэниэлсом для издания pudding. Они анализировали ошибки в правописании при поиске имен и фамилий звезд.
misspellings <- read_csv("https://raw.githubusercontent.com/agricolamz/DS_for_DH/master/data/misspelling_dataset.csv")
## Parsed with column specification:
## cols(
## correct = col_character(),
## spelling = col_character(),
## count = col_double()
## )
В датасете следующие переменные:
correct
– корректное написание фамилииspelling
– написание, которое сделали пользователиcount
– количество случаев такого написания