Обложка канала

R4marketing | канал Алексея Селезнёва | Язык R

Автор канала Алексей Селезнёв, руководитель отдела аналитики в Netpeak, автор R пакетов: ryandexdirect, rfacebookstat и др. В канале публикуются статьи, доклады, новости, заметки по языку R.

R4marketing | канал Алексея Селезнёва | Язык R

4 года назад
Открыть в
​​Валидация данных в R Для валидации, т.е. проверки корректности данных в R удобно использовать пакет data.validator. Функции реализующие валидацию данных: ● validate_if()validate_cols()validate_rows() Цикл проверки: 1. Создаёте объект отчёта функцией data_validation_report() 2. Загрузите набор данных, который необходимо валидировать. 3. Инициируйте процесс валидации: 3.1. Запустите конвейер проверки, начиная с функции validate(). 3.2. Используйте функции validate_*() и предикаты для проверки данных. Вы можете создавать собственные предикаты. См. пример в примере ниже функцию between(). 3.3. Добавьте результаты проверки в отчет с помощью add_results(). 4. Выведите результат проверки в консоль через print(), или создайте отчет в формате HTML используя save_report(). Пример:
 
library(assertr)
library(magrittr)
library(data.validator)

report <- data_validation_report()

validate(mtcars, name = "Проверяем таблицу mtcars") %>%
  validate_if(drat < 0, description = "Столбец drat содержит только положительные значения") %>%
  validate_cols(in_set(c(0, 2)), vs, am, description = "Значения столбцов vs и am равны только 0 или 2") %>%
  validate_cols(within_n_sds(1), mpg, description = "Столбец mpg в прделах 1го стандартного отклонения") %>%
  validate_rows(num_row_NAs, within_bounds(0, 2), vs, am, mpg, description = "Количество пропущенных значений в строках не превышает 2") %>%
  validate_rows(maha_dist, within_n_mads(10), everything(), description = "Расстояние Махаланобиса не превышает 10 медианных абсолютных отклонений") %>%
  add_results(report)

between <- function(a, b) {
  function(x) { a <= x && x <= b }
}

validate(iris, name = "Проверяем набор данных iris") %>%
  validate_if(Sepal.Length > 0, description = "Значения столбца Sepal length положительные") %>%
  validate_cols(between(0, 4), Sepal.Width, description = "Значения столбца Sepal находятся в диапазоне от 0 до 4") %>%
  add_results(report)

# выводим результат в консоль
print(report)

# Создаём HTML отчёт
save_report(report, success = FALSE)
browseURL("validation_report.html")
Большинство проверок в приведённом примере реализованы на базе пакета assertr, о котором мы тоже поговорим более подробно немного позже. Смотрите также: - Пакет framecleaner является обёрткой над dplyr::mutate(), и предоставляет несколько функций для краткого решения общих проблем, возникающих при приведении в порядок небольших и средних наборов данных #заметки_по_R