Как сделать таблицу в rstudio
Работа с таблицами в R: Data.table и OLAP
Таблицы это один из основных способов работы со структурированными данными. В языке R для работы с таблицами существует множество библиотек. Data.table одна из самых быстрых R библиотек для работы с большими массивами табличных данных, работает на основе цепочек. Результат из одного звена передается в следующее звено в виде готового результата. По факту, это улучшенная наследуемая версия data.frames, который является стандартной структурой данных для хранения в базе R.
userb2b = data.table( a = 1:11, b = 7:5, c = 11:23 )
В результате мы получим самую простую таблицу со столбцами ID, a, b, c и случайными диапазонами значений из кода выше для каждого столбца. Я понимаю, что для названий столбцов выбирать цифры или одну букву вместо нормальных имен это плохая практика, но благодаря этому примеру я могу упомянуть эту плохую практику, и вы не будете так делать в будущем. Также, если для работы вы решите импортировать данные из CSV, то используйте для импорта данных библиотеку readr или функции fwrite и fread из data.table. Базовые функции работают медленно.
Все это имеет практическое применение. Допустим, в нашей таблице столбец «ID» отвечает за имя пользователя, а столбец «с» за ARPU diary. Командой userb2b[,.(ID), by=»c»] можно легко отсортировать имена пользователей по метрике ARPU diary.
userb2b[, c := NULL] userb2b[, 2 := NULL]
Вы могли заметить, везде используется оператор :=, он нужен для добавления/удаления/обновления столбцов.
Теперь создадим столбцы. Во втором примере новый столбец создается на основе математических операций в уже имеющихся столбцах (напомню, столбца a у нас уже не осталось)
Объединение таблиц: работа с одной таблицей не является чем-то сложным и наверняка первая мысль читателя: «я лучше буду это делать в Excel». Так как в первую очередь мы будем работать с несколькими таблицами, то давайте создадим две таблицы:
ID
INNER JOIN получает все записи, которые являются общими для обеих таблиц на основе внешнего ключа. В результате получаем таблицу с записями, общими для левой и правой таблиц. Основное применение это получение среза данных по двум колонкам. Например, выцепить данные из первой таблицы обо всех клиентах, которые заплатили и посмотреть во второй таблице, сколько заплатили. Inner Join создан как раз для этого, возвращает строки из обеих таблиц, которые удовлетворяют заданным условиям.
newtav
LEFT JOIN получает все записи из таблицы, указанной на стороне LEFT. Не берутся записи из правой таблицы. Основное применение: посмотреть все записи по определенному столбцу. Если для строки из левой таблицы не будет найдена соответствующая запись в правой, то значение будет N/A.
newtav
RIGHT JOIN работает аналогично примеру выше, но получает все записи в таблице, указанной в RIGHT. Не трудно догадаться, что Left join легко превращается в Right join при изменении порядка таблиц для объединения.
newtav
Полученную таблицу можно красиво оформить, экспортировать и формировать гипотезы на основе полученных данных:
library(formattable) formattable(userb2b, align =c(«l»,»r»,»r»,»r»), preproc = NULL, postproc = NULL)
coolColor_one = «#27CF9F» coolCOlor_weak = «#A5E2E3» levelColor = «#E1BC50» formattable(newtav, align =c(«l»,»r»,»r»,»r»), list( «Subject» = formatter(«span», style =
style(color = ifelse(Subject == «53», «red», «gray»), font.weight = «bold»)), «pt» = color_bar(levelColor), «Event» = color_tile(coolColor_one, coolCOlor_weak), «ready» = color_tile(coolColor_one, coolCOlor_weak) ))
Но что делать, когда данных слишком много, количество таблиц стремится к десяткам, и объединять их поштучно становится слишком долго, дорого и сложно? Когда количество собранных пользовательских данных переваливает за терабайт, одно из решений это многомерные базы данных. Очень удобны для работы, у таких баз данных есть несколько измерений, больше чем 2 (классическая таблица). В классических базах данных есть колонки и ряды, как в Excel или в таблице, что мы создали выше. Многомерные базы данных состоят из минимум трех измерений, формируя куб.
Посмотрим на примере: есть три измерения: продажи, года и каналы. Из такого куба мы можем узнать, например, что было сделано 566 продажи через канал прямых продаж в 2011 году. Эти данные нам дает пересечении трех измерений в одной ячейке.
Но одна ячейка это слишком просто и бесполезно, OLAP же позволяет получить весь плоский квадрат со всеми данными по одному каналу. Если вы работаете на аутсорсе, то в современных CRM без OLAP никуда.
OLAP позволяет избежать помощи программиста, скорость доступа к данным очень высокая. И непрогнозируемая нагрузка на сервера, когда цепочка дата — дата — дата — факт — факт — факт становится слишком длинной. Но главное, можно анализировать бесконечное количество вариантов работы пользователей, крутя куб и линкуя его к MS Office. Отдаленно эта работа похожа на сводные таблицы в Excel. Давайте создадим новые данные и построим на их основе OLAP-куб, в котором будет информация месячном APPRU в диапазоне 24-х месяцев по трем маркам телефонов.
8 комментариев
Добрый день, подскажите, как автоматизировать подсчет основных финансовых бизнес-показателей? Данных в CRM не особо много, есть айдишники клиента и заказа, дата заказа без времени, какой способ отгрузки был выбран, и сумма. Какие метрики можно отслеживать по таким вводным?
Из финансовых метрик это AOV (средний чек), его медиана и максимальный чек (MedOV и MaxOV). Я чуть обрезал такую таблицу из недавнего проекта, должно быть похоже на ваши данные.
library(readr) library(dplyr) library(knitr) data % summarize(sales_total = sum(sales), orders_count = n(), AOV = mean(sales), MedOV = median(sales), MaxOV = max(sales))
Получаем sales_total = 181337, orders_count = 2299, AOV = 78.9, MedOV = 50, MaxOV = 760. Что можно сказать по этим цифрам? AOV если в долларах, то не плохо. Медиана ниже среднего чека, другими словами, половина всех заказов по цене ниже среднего, а это уже проблема для онлайн-магазина.
Видно, что количество заказов с суммой покупки больше 200 заметно меньше желаемого. Имеет смысл поработать над высокомаржинальными товарами. Вам бы еще стоимость одной продажи или одного клиента (СPS) подсчитать, стоимость конверсии (CPC) и объем конверсий (CV). И можно будет отличный бизнесовый дашборд сделать.
из чего состоит типичный бизнесовый дашборд?
— Финансовый прогноз на неделю (раз в неделю)
— Финансовые результаты за прошлую неделю (раз в неделю)
— Дебиторка:cумма выставленных, но не оплаченных счетов (обновляется в реальном времени)
— P&L (парсинг бухгалтерии и банков)
— Загрузка сотрудников (выполнение финансового плана)
— Баланс (в реальном времени)
— HR-отчет (раз в неделю)
— Траты компании (раз в неделю)
— Аудит бухгалтерии
Отдельно отчеты по операционному директору (выручка) и человеку, который отвечает за траты.
Здравствуйте, пытаюсь понять связь покупок с действиями на сайте пользователя, как такое реализовывается?
x = 1:25; y = x^2 cor(x,y, meth = «p») cor(x,y, meth = «s»)
Но это простой пример, без мультиколлинеарности (взаимной корреляции фич).
Здравствуйте, как загружать таблицы в R без прописывания каждый раз полного пути, просто с указанием имени файла?
Поместите файл в папку, которую RStudio покажет после выполнения команды:
Это проверка вашей рабочей директории. Задать свою директорию и дальше указать файл в заданной папке можно так:
DataFrame in R
Do you want to learn all about R Data Frames? This is a full tutorial of this R data structure. At the end of this post you will be able to understand all the basic concepts to work with a dataframe in R, like how to create new data frames and how to access the data, append new data, filter or subset the observations.
What is a data frame in R?
Data frames are the most usual object to store data in R. In this type of object each individual or date corresponds to a row and each column corresponds to a variable. Inside this type of structure you can store different data types.
Data frame or matrix?
A common question is to ask in which cases you should use a data frame or a matrix in R. Data frames are data structures very similar to matrices, but in case of data frames you can have different data types within columns, so the difference is that matrix store homogeneous data types whereas data frames store heterogeneous data types. Suppose, for instance, that you have the following data:
You could store those variables as a matrix using the cbind function:
If you print your new variable, you will get the following output:
However, you may have noticed that the result is not satisfactory, as all the variables have been transformed to character class. If you use the data.frame function, you will keep the original type of the variables.
Data frames, unlike matrices, can store different types of objects.
How to create a dataframe in R?
In R is very straightforward to create a new data frame. You can join your variables making use of the data.frame function to convert your data to a data frame data structure. First, you need to have some variables stored to create your dataframe in R. In this example, we are going to define some variables of weather data. Note that all of them have the same length.
To join the data you can use the data.frame function. We are going to store the dataframe, for instance, in a variable named data :
First, it is very common to display the first values to make some checks. For that purpose you can make use of the head function in R, which by default will show the first 6 rows of your dataframe.
Second, you could make use of the summary function that will return a statistical summary of the variables (columns) of the dataset.
Nonetheless, you can also make use of the example data frames that R provides. To look for them you can call the data function:
Once executed, a window with a list of available datasets will open:
Now you can load any typing:
As an example, if you want to load the ‘AirPassengers’ dataset into the workspace you can write:
Create empty dataframe in R
Sometimes you want to initialize an empty data frame without variables and fill them after inside a loop, or by other way you want. In this case, the most recommended way is to create an empty data structure using the data.frame function and creating empty variables. Nevertheless, in the following code block we will show you that way and several alternatives.
Accessing data frame data
There are several ways to access the columns stored in data frame objects:
As an example, if you want to select the month column of the dataframe you created just call the following:
You can also select several variables at once. For that purpose you can:
Similarly, you can access rows of data frames with data[1, ] or data[1:2, ] to select the first row, the first and the second one, or select just some data points selecting rows and columns at once:
Direct access using attach function
If you don’t want to write the name of the data frame again and again you can just attach it, in order to make a direct use of variables, with the attach function:
If you want to disable the direct access, you just have to use the detach function:
Add columns and rows to dataframe in R
If you call head(cars) in the console you can see the following output:
Suppose you want to create a new variable to transform the speed in kilometer per hour (kph) and the distance in meters. Recall that:
kilometer = miles/0.62137 and meters = feet/3.2808
So now you could add two new columns called kph (kilometers per hour) and meters with the following code:
You could also make use of the cbind function. If you would like to add a new row, you could use the rbind function.
Append new rows with rbind and new columns with the cbind functions.
Delete columns and rows of a dataframe
Now, if you want to remove variables or rows of a data frame, you have several options:
If you make use of the head function again, you can see the new data frame.
Sorting and filtering data of dataframe in R
It is usual to sort or filter the data inside data frames by the values of some variable.
Sorting dataframes
The vector of the sorted index establishes the order in which the rows of the database have to be chosen in order to obtain the desired ordering.
You can also sort from higher to lower making use of the minus sign.
Filtering data frames
Filter a data frame consist on obtaining a subsample that meets some conditions. For this purpose, you can use the subset function to subset dataframes by column values. We will provide some examples based on the mtcars dataset.
Subset of the dataset where the number of cylinders of the car is exactly 6 and the horse power is greater than 110.
Now, instead of using the AND condition we will use the OR condition. In this case, we will select the cars where the variable wt is less than 2 or the variable hp is greater than 115.
Работа с табличными данными в R. Часть 1
Data Frame
Data Frame используются для хранения табличных данных. Они представляют собой особый тип списков (lists), матрицу данных. Это – именованный список векторов одной и той же длины, в которых элементы отвечают за переменные. В отличие от матриц, таблица данных содержит элементы разных классов, т.е. допускаются столбцы с числовыми, текстовыми и логическими значениями.
Создать Data Frame
Для создания таблицы данных применяется функция data.frame()
Определение таблицы данных на основе векторов
Определим сначала два вектора, а после введем величину d, которая является таблицей данных, включающей эти два вектора:
Еще один пример по созданию таблицы данных
Пусть требуется изменить названия столбцов. Тогда
Кроме того, вывод значений 1-го столбца (переменной) осуществляется следующим образом
Изложенная процедура создания таблицы данных с изменением названий столбцов имеет аналог
Выбор числа, строк и столбцов
[1] 5260 5470 5640 6180 6390 6515 6805 7515 7515 8230 8770
Если нужно взять определенные элементы из вектора, пользуемся записью вида
Здесь с(…) запись, которая определяет вектор, состоящий из чисел под указанными порядковыми номерами.
Это же можно делать следующим образом
Кроме того, применяются логические условия для выбора чисел из вектора
intake.post[intake.pre > 7000 & intake.pre
Индексирование с data frame происходит так
В квадратных скобках первый параметр указывает на номер строки, а второй – столбца. То же самое получаем, если вместо номера указывается наименование переменной
Если нужна конкретная строка целиком, например, 5-я, то записываем
Следует подчеркнуть, что запятая нужна.
По аналогии получаем все значения по конкретному столбцу
[1] 3910 4220 3885 5160 5645 4680 5265 5975 6790 6900 7335
Пусть необходимо вывести значения по заданным строкам и столбцам. Для этого следует выполнить
Выбор по условию
Если нужна выборка записей (строк), которые соответствуют выполнению условия по одной переменной, то команда имеет такой вид
Данную выборку можно получить несколько другим способом
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE
Шапка – head ()
Работая над большим массивом данных, часто есть потребность посмотреть несколько первых строк. В таком случае можно выбрать один из двух способов.
Конец – tail()
Сведения о таблице: количество строк и столбцов, их названия
Чтобы узнать, сколько строк и столбцов насчитывается в таблице, воспользуемся функцией dim()
Благодаря dimnames() можно увидеть названия строк и столбцов
Как видим, Data Frame имеет особый атрибут raw.names
Чтобы узнать и применять в дальнейших расчетах количество строк, вводим функцию nrow(). А количество столбцов определяется через ncol().
Полезной функцией для получения информации о таблице данных является str()
При создании таблицы можно указать, что переменная типа “Factor” является “Character”
‘data.frame’: 5 obs. of 3 variables:
Язык R для пользователей Excel (бесплатный видео курс)
В связи с карантином многие сейчас львиную долю времени проводят дома, и это время можно, и даже нужно провести с пользой.
В начале карантина я решил довести до ума некоторые проекты начатые несколько месяцев назад. Одним из таких проектов был видео курс «Язык R для пользователей Excel». Этим курсом я хотел снизить порог вхождения в R, и немного восполнить существующий дефицит обучающих материалов по данной теме на русском языке.
Если всю работу с данными в компании, в котороый вы работаете принято по-прежнему вести в Excel, то предлагаю вам познакомится с более современным, и при этом совершенно бесплатным инструментом анализа данных.
Содержание
Если вы интересуетесь анализом данных возможно вам будут интересны мои telegram и youtube каналы. Большая часть контента которых посвящены языку R.
Ссылки
О курсе
Курс проведёт вас через все операции анализа данных, от загрузки до визуализации готового результата.
Почему именно язык R, а не Python? Потому, что R функциональный язык, пользователям Excel на него перейти легче, т.к. не надо вникать в традиционное объектно-ориентированное программирование.
На данный момент запланировано 13 видео уроков длительностью от 5 до 20 минут каждый.
Уроки будут открываться постепенно. Каждый понедельник я буду открывать доступ к новому уроку у себя на YouTube канале в отдельном плей листе.
Для кого этот курс
Думаю это понятно из названия, тем не менее опишу более подробно.
Курс ориентирован на тех, кто в работе активно использует Microsoft Excel и там же реализует всю работу с данными. В общем, если вы открываете приложение Microsoft Excel хотя бы раз в неделю то курс вам подойдёт.
Навыков программирования для прохождения курса от вас не требуется, т.к. курс ориентирован на начинающих.
Но, возможно начиная с 4 урока найдётся материал интересный и для активных пользователей R, т.к. основной функционал таких пакетов как dplyr и tidyr будет рассмотрен достаточно подробно.
Программа курса
Урок 1: Установка языка R и среды разработки RStudio
Дата публикации: 23 марта 2020
Ссылки:
Видео:
Описание:
Вступительный урок в ходе которого мы скачаем и установим необходимое программное обеспечение, и немного разберём возможности и интерфейс среды разработки RStudio.
Тест
Ссылка на тест для проверки знаний.
Урок 2: Основные структуры данных в R
Дата публикации: 30 марта 2020
Ссылки:
Видео:
Описание:
Этот урок поможет вам разобраться с тем, какие структуры данных есть в языке R. Мы подробно разберём векторы, дата фреймы и списки. Научимся их создавать и обращаться к их отдельным элементам.
Тест
Ссылка на тест для проверки знаний.
Урок 3: Чтение данных из TSV, CSV, Excel файлов и Google Таблиц
Дата публикации: 6 апреля 2020
Ссылки:
Видео:
Тест
Ссылка на тест для проверки знаний.
Урок 4: Фильтрация строк, выбор и переименование столбцов, пайпланы в R
Дата публикации: 13 апреля 2020
Ссылки:
Видео:
Также узнаем что такое пайпланы и как они помогают делать ваш код на языке R более читабельным.
Тест
Ссылка на тест для проверки знаний.
Урок 5: Добавление вычисляемых столбцов в таблицу на языке R
Дата публикации: 20 апреля 2020
Ссылки:
Видео:
Тест
Ссылка на тест для проверки знаний.
Урок 6: Группировка и агрегация данных на языке R
Дата публикации: 27 апреля 2020
Ссылки:
Видео:
Тест
Ссылка на тест для проверки знаний.
Урок 7: Вертикальное и горизонтальное объединение таблиц на языке R
Дата публикации: 4 мая 2020
Ссылки:
Видео:
Описание:
Этот урок поможет вам разобраться с операциями вертикального и горизонтального объединения таблиц.
Вертикальное объединение является аналогом операции UNION в языке запросов SQL.
Горизонтальное объединение пользователям Excel более известно благодаря функции ВПР, в SQL такие операции осуществляются оператором JOIN.
Основные функции которые мы рассмотрим:
Тест
Ссылка на тест для проверки знаний.
Урок 8: Оконные функции в R
Дата публикации: 11 мая 2020
Ссылки:
Видео:
Описание:
Оконные функции по смыслу похожи на агрегирующие, они также принимают на вход массив значений и проводят над ними арифметические операции, но в исходящем результате не изменяют количество строк.
Тест
Ссылка на тест для проверки знаний.
Урок 9: Вращение таблиц или аналог сводных таблиц в R
Дата публикации: 18 мая 2020
Ссылки:
Видео:
Описание:
Большинство пользователей Excel используют сводные таблицы, это удобный инструмент с помощью которого вы можете в считанные секунды превратить массив сырых данных в читабельные отчёты.
В этом уроке мы разберёмся с тем как вращать таблицы в R, и преобразовывать их из широко формата в длинный и наоборот.
Тест
Ссылка на тест для проверки знаний.
Урок 10: Загрузка JSON файлов в R и преобразование списков в таблицы
Дата публикации: 25 мая 2020
Ссылки:
Видео:
Описание:
JSON и XML являются чрезвычайно популярными форматами хранения и обмена информацией, как правило, за счёт своей компактности.
Но анализировать данные представленные в таких форматах сложно, поэтому их перед анализом необходимо привести к табличному виду, именно этому мы и научимся в данном видео.
Тест
Ссылка на тест для проверки знаний.
Урок 11: Быстрое построение графиков с помощью функции qplot()
Дата публикации: 1 июня 2020
Ссылки:
Видео:
Описание:
Пакет ggplot2 является одним из наиболее популярных средств визуализации данных не только в R.
Тест
Ссылка на тест для проверки знаний.
Урок 12: Построение графиков слой за слоем с помощью пакета ggplot2
Дата публикации: 8 июня 2020
Ссылки:
Видео:
Описание:
В уроке продемонстрирована вся мощь пакета ggplot2 и заложенной в него грамматики построения графиков слоями.
Мы разберём основные геометрии которые присутствуют в пакете и научимся накладывать слои для построения графика.
Тест
Ссылка на тест для проверки знаний.
Урок 13: Изменение элементов графика и применение тем в ggplot2
Дата публикации: 15 июня 2020
Ссылки:
Видео:
Тест
Ссылка на тест для проверки знаний.
Заключение
Я старался подойти к формированию программы курса максимально лаконично, выделить только самую необходимую информацию которая понадобится вам для того, что бы сделать первые шаги в изучении такого мощного инструмента анализа данных как язык R.
Курс не является исчерпывающим руководством по анализу данных с помощью языка R, но поможет вам разобраться со всеми необходимыми для этого приёмами.
Пока программа курса рассчитана на 12 недель, каждую неделю, по понедельникам я буду открывать доступ к новым урокам, поэтому рекомендую подписаться на YouTube канал, что бы не пропустить публикацию нового урока.