Как стать автором
Обновить
19
0
Анна Каплун @qc-enior

Пользователь

Отправить сообщение

Агрегирующие функции в dplyr

Время на прочтение6 мин
Количество просмотров6.1K
summarise() используется с агрегирующими функциями, которые принимают на вход вектор значений, а возвращают одно. Функция summarise_each() предлагает другой подход к summarise() с такими же результатами.

Цель этой статьи — сравнить поведение summarise() и summarise_each(), учитывая два фактора, которыми мы можем управлять:

1. Сколькими переменными оперировать
  • 1А, одна переменная
  • 1В, более одной переменной

2. Сколько функций применять к каждой переменной
  • 2А, одна функция
  • 2В, более одной функции

Получается четыре варианта:
  • Вариант 1: применить одну функцию к одной переменной
  • Вариант 2: применить много функций к одной переменной
  • Вариант 3: применить одну функцию к многим переменным
  • Вариант 4: применить много функций к многим переменным

Также проверим эти четыре случая с и без опции group_by().
Читать дальше →

R: геопространственные библиотеки

Время на прочтение4 мин
Количество просмотров5.2K
Ввод/вывод, изменение и визуализация геопространственных данных — задачи, общие для многих дисциплин. Поэтому многие заинтересованы в создании хороших инструментов для их решения. Набор инструментов для работы с пространственными данными постоянно растет. Мы поверхностно рассмотрим каждый из них. Подробности можно получить по ссылкам на cran или github.

Мы не пытаемся заменить уже существующие в R геопространственные библиотеки — скорее, дополнить и создать небольшие инструменты, позволяющие легко воспользоваться только необходимыми вам функциями.
Читать дальше →

Генерация и визуализация многомерных данных с R

Время на прочтение4 мин
Количество просмотров14K
Возможность генерировать данные с заданной корреляцией очень важна для моделирования. В R ожидаемо обширный набор инструментов — пакетов и функций для генерации и визуализации данных из многомерных распределений. Базовая функция для генерации многомерных нормально распределенных данных — mvrnorm() из пакета MASS, части R, хотя пакет mvtnorm также предлагает функции для симуляции и многомерного нормального, и t-распределения.
Читать дальше →

Стратегии по ускорению кода на R, часть 2

Время на прочтение4 мин
Количество просмотров4.4K
Цикл for в R может быть очень медленным, если он применяется в чистом виде, без оптимизации, особенно когда приходится иметь дело с большими наборами данных. Есть ряд способов сделать ваш код быстрее, и вы, вероятно, будете удивлены, узнав насколько.

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

Давайте попробуем ускорить код с циклом for и условным оператором (if-else) для создания колонки, которая добавляется к набору данных (data frame, df). Код ниже создает этот начальный набор данных.
# Создание набора данных
col1 <- runif (12^5, 0, 2)
col2 <- rnorm (12^5, 0, 2)
col3 <- rpois (12^5, 3)
col4 <- rchisq (12^5, 2)
df <- data.frame (col1, col2, col3, col4)

В первой части: векторизация, только истинные условия, ifelse.
В этой части: which, apply, побайтовая компиляция, Rcpp, data.table, результаты.
Читать дальше →

Стратегии по ускорению кода на R, часть 1

Время на прочтение3 мин
Количество просмотров7.3K
Цикл for в R может быть очень медленным, если он применяется в чистом виде, без оптимизации, особенно когда приходится иметь дело с большими наборами данных. Есть ряд способов сделать ваш код быстрее, и вы, вероятно, будете удивлены, узнав насколько.

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

Давайте попробуем ускорить код с циклом for и условным оператором (if-else) для создания колонки, которая добавляется к набору данных (data frame, df). Код ниже создает этот начальный набор данных.
# Создание набора данных
col1 <- runif (12^5, 0, 2)
col2 <- rnorm (12^5, 0, 2)
col3 <- rpois (12^5, 3)
col4 <- rchisq (12^5, 2)
df <- data.frame (col1, col2, col3, col4)

В этой части: векторизация, только истинные условия, ifelse.
В следующей части: which, apply, побайтовая компиляция, Rcpp, data.table.
Читать дальше →

Тестирование и теория графов: инсталлятор

Время на прочтение4 мин
Количество просмотров11K
image
Причин написания этой статьи две. Первая — показать, как можно использовать виды покрытия графов в тестировании, и привести еще один пример практического применения техники тестирования состояний и переходов. Вторая — пусть не опровергнуть, но хотя бы пошатнуть миф о том, что тестировщику не нужна математика и мозг.

В сети есть довольно много материалов, описывающих процесс тестирования инсталлятора и результат его работы. Существует множество чеклистов и других полезностей на эту тему. Речь ниже пойдет о достаточно узкой части процесса инсталляции — тестировании собственно визарда. Достаточно ли пройтись по всем экранам визарда, чтобы утверждать, что он хорошо работает? Возможно, хватит нажать на каждую из кнопок «Назад», «Далее», «Отмена» по одному разу? Как ограничить количество сценариев, если оно бесконечно (можно сколько угодно раз перемещаться между двумя соседними экранами инсталлятора с помощью кнопок «Назад» и «Далее»)?

Для иллюстрации используется инсталлятор LibreOffice 5 под Windows. Решение взять именно его связано с доступностью подробных пошаговых скриншотов. В статье используется нотация из первой и второй статей о покрытии графов.
Читать дальше →

Как безопасно хранить и использовать в R секретные данные

Время на прочтение5 мин
Количество просмотров7.1K
Периодически возникает вопрос, как можно безопасно хранить логин и пароль в R, не задавая эти данные в явном виде в вашем скрипте. Мне кажется, есть несколько возможных решений. Можно хранить ваши параметры:
  1. Непосредственно в скрипте.
  2. В файле внутри папки с проектом, который вы не показываете.
  3. В файле .Rprofile.
  4. В файле .Renviron.
  5. В json файле.
  6. В безопасном хранилище, к которому вы обращаетесь из R.
  7. Используя пакет digest.
  8. Используя пакет sodium.
  9. Используя пакет secure.

Давайте рассмотрим основную идею, преимущества (или недостатки) каждого из подходов.
[От переводчика: упорядочено по мере возрастания полезности.]
Читать дальше →

Использование apply, sapply, lapply в R

Время на прочтение5 мин
Количество просмотров47K
Это вводная статья об использовании apply, sapply и lapply, она лучше всего подходит для людей, которые недавно работают с R или незнакомы с этими функциями. Я приведу несколько примеров использования функций семейства apply, поскольку они часто применяются при работе в R.

Я сравнивал эти три метода на наборе данных. Была сгенерирована выборка, и они к ней применялись. Хотелось посмотреть, чем отличаются результаты их применения.

Также использовался тестовый стенд, который возвращал матрицу. В ней было три колонки и около 30 строк. Выглядело примерно так:

method1  method2    method3 
[1,] 0.05517714 0.014054038 0.017260447
[2,] 0.08367678 0.003570883 0.004289079
[3,] 0.05274706 0.028629661 0.071323030
[4,] 0.06769936 0.048446559 0.057432519
[5,] 0.06875188 0.019782518 0.080564474 
[6,] 0.04913779 0.100062929 0.102208706

Такие данные можно симулировать с помощью rnorm, чтобы создать три набора. Первый — со средним, равным 0, второй — со средним 2, третий — со средним 5, и 30 строк.

m <- matrix(data=cbind(rnorm(30, 0), rnorm(30, 2), rnorm(30, 5)), nrow=30, ncol=3)
Читать дальше →

Покрытие графов в тестировании ПО, часть 2

Время на прочтение4 мин
Количество просмотров8.5K
Большинство программ и алгоритмов можно представить в виде графа, состоящего из набора вершин (N) и ребер (Е). Покрытие графов в тестировании полезно тем, что можно проектировать тесты, используя разные критерии покрытия, и выявить ошибки. Что касается тестирования черного ящика, то покрытие графов здесь тоже может иметь большое значение, если приходится работать с состояниями и переходами, графами состояний сущности и т.д. Если граф достаточно сложен, разные критерии покрытия позволят оценить достаточность тестового набора.

В первой части: определения, покрытие вершин, ребер, путей, цикломатическая сложность.
Читать дальше →

Покрытие графов в тестировании ПО, часть 1

Время на прочтение4 мин
Количество просмотров16K

Большинство программ и алгоритмов можно представить в виде графа, состоящего из набора вершин (N) и ребер (Е). Покрытие графов в тестировании полезно тем, что можно проектировать тесты, используя разные критерии покрытия, и выявить ошибки. Что касается тестирования черного ящика, то покрытие графов здесь тоже может иметь большое значение, если приходится работать с состояниями и переходами, графами состояний сущности и т.д. Если граф достаточно сложен, разные критерии покрытия позволят оценить достаточность тестового набора.
Читать дальше →

Тестирование областей определения или нечто большее, чем анализ граничных значений

Время на прочтение7 мин
Количество просмотров101K
image
Все тестировщики как минимум наслышаны о таких техниках тест-дизайна, как классы эквивалентности и анализ граничных значений. Казалось бы, что может быть проще: выделить классы, взять по одному значению в каждом, проверить границы классов и значения слева и справа от границ. Но всегда ли дела обстоят настолько просто? Как быть, если после разбиения на классы оказывается, что с границами, в общем-то, проблема — их нельзя определить, поскольку данные невозможно упорядочить? Что если тестируемые параметры связаны между собой некоей логикой и зависят друг от друга? Сколько тестов достаточно? Ниже будут рассмотрены возможности двух основных техник тест-дизайна, превышающие те, что заложены в их непосредственном определении.
Читать дальше →

Визуализация статических и динамических сетей на R, часть 7, последняя

Время на прочтение8 мин
Количество просмотров6.2K
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

Во второй части: цвета и шрифты в графиках R.

В третьей части: параметры графов, вершин и ребер.

В четвертой части: размещения сети.

В пятой части: акцентирование свойств сети, вершин, ребер, путей.

В шестой части: интерактивная визуализация сетей, другие способы представления сети.

В этой части: анимированная визуализация сетей, эволюция сети во времени.
Читать дальше →

Визуализация статических и динамических сетей на R, часть 6

Время на прочтение5 мин
Количество просмотров11K
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

Во второй части: цвета и шрифты в графиках R.

В третьей части: параметры графов, вершин и ребер.

В четвертой части: размещения сети.

В пятой части: акцентирование свойств сети, вершин, ребер, путей.

В этой части: интерактивная визуализация сетей, другие способы представления сети.
Читать дальше →

Визуализация статических и динамических сетей на R, часть 5

Время на прочтение3 мин
Количество просмотров6.4K
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

Во второй части: цвета и шрифты в графиках R.

В третьей части: параметры графов, вершин и ребер.

В четвертой части: размещения сети.

В этой части: акцентирование свойств сети, вершин, ребер, путей.
Читать дальше →

Визуализация статических и динамических сетей на R, часть 4

Время на прочтение4 мин
Количество просмотров12K
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

Во второй части: цвета и шрифты в графиках R.

В третьей части: параметры графов, вершин и ребер.

В этой части: размещения сети.
Читать дальше →

Визуализация статических и динамических сетей на R, часть 3

Время на прочтение4 мин
Количество просмотров9.8K
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

Во второй части: цвета и шрифты в графиках R.

В этой части: параметры графов, вершин и ребер.
Читать дальше →

Визуализация статических и динамических сетей на R, часть 2

Время на прочтение3 мин
Количество просмотров11K
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

В этой части: цвета и шрифты в графиках R.
Читать дальше →

Визуализация статических и динамических сетей на R, часть 1

Время на прочтение4 мин
Количество просмотров19K
Очень многие системы и явления представимы в виде сетей, т.е. набора объектов и связей между ними. Сеть — не только абстракция, но и наглядный инструмент визуализации данных. Можно отобразить важность того или иного объекта, вес каждой связи, указать ключевые группы элементов, выделить их и подчеркнуть связи между ними. Главная задача визуализации — подать ключевую информацию о свойствах системы или явления максимально легким для восприятия способом. В идеальном случае анализ системы и визуализацию его результатов можно сделать в рамках одного инструмента. R с его обширным набором пакетов позволяет это.
Читать дальше →

Комбинаторное тестирование: генерация тестовых данных и не только

Время на прочтение6 мин
Количество просмотров31K
image Хотя популярность buzzword «pairwise» уже не та, на собеседованиях до сих пор задают вопрос о том, что представляет собой эта техника тест-дизайна. Однако, далеко не все тестировщики (как те, кто приходят на собеседование, так и те, кто его проводят) могут четко сформулировать ответ на вопрос, зачем нужны комбинаторные техники в общем и pairwise в частности (подавляющее большинство ошибок, все же, находятся на атомарных значениях параметров и не зависят от других). Простой ответ на этот вопрос, на мой взгляд — для нахождения багов, возникающих вследствие явных и неявных зависимостей между параметрами. Для простых случаев техника вряд ли принесет серьезную пользу, поскольку их можно проверить вручную, а для большого числа параметров и сложных зависимостей между ними количество тестов, скорее всего, будет слишком велико для ручного тестирования. Потому основное применение комбинаторных техник (и соответственно, инструментов, осуществляющих генерацию комбинаций параметров) — автоматизированное составление наборов тестовых данных по определенным законам.

Большинство инструментов для генерации комбинаторных тестов умеют выдавать результат в виде файла с данными, который может быть передан на вход соответствующим автотестам. Такой пример (используется инструмент PICT) и будет рассмотрен ниже.
Читать дальше →

Анализ тональности высказываний в Twitter: реализация с примером на R

Время на прочтение10 мин
Количество просмотров19K
Социальные сети (Twitter, Facebook, LinkedIn) — пожалуй, самая популярная бесплатная доступная широкой общественности площадка для высказывания мыслей по разным поводам. Миллионы твитов (постов) ежедневно — там кроется огромное количество информации. В частности, Twitter широко используется компаниями и обычными людьми для описания состояния дел, продвижения продуктов или услуг. Twitter также является прекрасным источником данных для проведения интеллектуального анализа текстов: начиная с логики поведения, событий, тональности высказываний и заканчивая предсказанием трендов на рынке ценных бумаг. Там кроется огромный массив информации для интеллектуального и контекстуального анализа текстов.

В этой статье я покажу, как проводить простой анализ тональности высказываний. Мы загрузим twitter-сообщения по определенной теме и сравним их с базой данных позитивных и негативных слов. Отношение найденных позитивных и негативных слов называют отношением тональности. Мы также создадим функции для нахождения наиболее часто встречающихся слов. Эти слова могут дать полезную контекстуальную информацию об общественном мнении и тональности высказываний. Массив данных для позитивных и негативных слов, выражающих мнение (тональных слов) взят из Хью и Лью, KDD-2004.

Реализация на R с применением twitteR, dplyr, stringr, ggplot2, tm, SnowballC, qdap и wordcloud. Перед применением нужно установить и загрузить эти пакеты, используя команды install.packages() и library().
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирована
Активность