Intro to timeperiodsR (RUS)

Alexey Seleznev

2019-09-18

Цель пакета timeperiodsR

Зачастую при создании скриптов которые в последвии будут запускаться по рассписанию нам необходимо определить период, как правило таким периодом может быть прошлая неделя, прошлый месяц, какое то количество прошлых дней. Пакет timeperiodsR предоставляет вам набор функций которые автоматически будут вычислять такой период от какой либо базовой даты.

Функции пакета timeperiodsR

Текущая версия пакета состоит из 24 функций, по названию каждой из функций можно определить какой временной интервал она возвращает. Название состоит из префикса last / previous / this / next и временной единицы day / week / month / quarter / year. Нижнее подчёркивание _ является разделителем слов в названиях функций.

Список функций

Компоненты получаемых объектов

Любая из функций пакета возвращает объект класса tpr состоящий из следующих компонентов: * start - начальную дату; * end - конечную дату; * sequence - последовательность дат; * length - количество дней входящих в период;

Аргументы

В функциях пакета timeperiodsR присутвуют следующие аргументы: * x - Объект даты, от которой будет вычисляться интервал, по умолчанию это текущий день; * n - Количество временных интервалов на которое необходимо сместится от даты указанной в аргументе x; * part - Какую часть объекта вам необходимо получить: * “all” - объект со всеми доступными компонентами; * “start” - начальную дату; * “end” - конечную дату; * “sequence” - последовательность дат; * “length” - количество дней входящих в период; * week_start - Какой день будет являться началом недели: 1 - понедельник, 7 - воскресенье; * include_current - Включать ли в период текущий временной объект, TRUE или FALSE.

Методы

Пакет timeperiodsR имеет несколько методов, позволяющих вам извлекать некоторые элементы объектов класса tpr.

last_n_*

Функции блока last_n_*() позволяют вам получить прошлый период с заданным количеством временных единиц.

Вместо * подставьте один из нужных вам временных интервалов: days, weeks, months, quarters, years

Например, допустим, что сегодня 26 сентября 2019 года и вам необходимо получить 2 прошлые недели то используйте функцию last_n_weeks():

library(timeperiodsR)
## 
## ---------------------
## Welcome to timeperiodsR version 0.1.0
## 
## Author:           Alexey Seleznev (Head of analytics dept at Netpeak).
## Telegram channel: https://t.me/R4marketing 
## Email:            selesnow@gmail.com
## Blog:             https://alexeyseleznev.wordpress.com 
## Facebook:         https://facebook.com/selesnown 
## Linkedin:         https://www.linkedin.com/in/selesnow 
## 
## Type ?timeperiodsR for the main documentation.
## The github page is: https://github.com/selesnow/timeperiodsR/
## 
## Suggestions and bug-reports can be submitted at: https://github.com/selesnow/timeperiodsR/issues
## Or contact: <selesnow@gmail.com>
## 
##  To suppress this message use:  suppressPackageStartupMessages(library(timeperiodsR))
## ---------------------
last2weeks <- last_n_weeks(n = 2)
2 прошлые недели

2 прошлые недели

Код захватит даты с 9 по 22 сентября включительно.

После чего у вас появится объект last2weeks класса tpr. Из него вы легко можете получить начальную или конечную дату периода, а так же всю последовательность дат которая вошла в этот период, или количество дней вошедших в период.

# начальная дата
last2weeks$start
## [1] "2019-09-02"
## или
start(last2weeks)
## [1] "2019-09-02"
# конечная дата
last2weeks$end
## [1] "2019-09-15"
## или
end(last2weeks)
## [1] "2019-09-15"
# последовательность дат
last2weeks$sequence
##  [1] "2019-09-02" "2019-09-03" "2019-09-04" "2019-09-05" "2019-09-06"
##  [6] "2019-09-07" "2019-09-08" "2019-09-09" "2019-09-10" "2019-09-11"
## [11] "2019-09-12" "2019-09-13" "2019-09-14" "2019-09-15"
## или
seq(last2weeks)
##  [1] "2019-09-02" "2019-09-03" "2019-09-04" "2019-09-05" "2019-09-06"
##  [6] "2019-09-07" "2019-09-08" "2019-09-09" "2019-09-10" "2019-09-11"
## [11] "2019-09-12" "2019-09-13" "2019-09-14" "2019-09-15"
# количество дней вошедших в период
last2weeks$length
## [1] 14
## или
length(last2weeks)
## [1] 14

Во всех функциях предназначенных для работы с неделями т.е. last_n_weeks(), previous_week(), this_week(), next_week(), next_n_weeks() присутвует аргумент week_start, с помощью которого можно указать день недели который будет являться её началом. По умолчанию неделя начинается с понедельника, т.е. week_start = 1, но вы можете задать и любой другой день:

  1. Понедельник
  2. Вторник
  3. Среда
  4. Четверг
  5. Пятница
  6. Суббота
  7. Воскресенье

Т.е. если вы хотите получить 2 предыдущие недели отталкиваясь от 26 сентября, и при этом необходимо считать началом неделеи воскресенье то используйте следующий код:

library(timeperiodsR)

last2weeks <- last_n_weeks(x = "2019-09-26", n = 2, week_start = 7)

previous_*

Функции блока previous_*() позволяют вам получить прошлый период со смещением на заданное количеством временных единиц. Т.е. например получить позапрошлую неделю.

Вместо * подставьте один из нужных вам временных интервалов: week, month, quarter, year

Допустим нам необходимо получить позапрошлую неделю отталкиваясь от 26 сентября 2019 года, началом недели должен быть понедельник

previous2weeks <- previous_week(x = "2019-09-26", n = 2)
Позапрошлая неделя

Позапрошлая неделя

this_*

Функции блока this_*() позволяют вам получить текущий период.

Вместо * подставьте один из нужных вам временных интервалов: week, month, quarter, year

Если вам необходимо получить первую и последнюю дату текущего месяца, и всю последовательность дат которые в него входят то используйте следующий код:

this_month()
## 
##  Time period: This month from 2019-09-18 
##  Date start:  1 Сентябрь of 2019, воскресенье 
##  Date end:    30 Сентябрь of 2019, понедельник
Текущий месяц

Текущий месяц

Т.е. если сегодня 26 сентября 2019 года функция this_month() захватит весь сентябрь 2019 года.

next_*

Функции блока next_*() противоположный функциям блока previous_*(). Т.е. позволяют вам получить будущий период со смещением на заданное количеством временных единиц. Т.е. например получить следующую неделю от 12 сентября.

Вместо * подставьте один из нужных вам временных интервалов: week, month, quarter, year

nextweek_from_12sep <- next_week("2019-09-12")

nextweek_from_today <- next_week()
Следующая неделя

Следующая неделя

next_n_*

Блок next_n_* позволяет создать период обратный от того, что создают функции блока last_n_*, т.е. получить будущий период с заданным количеством временных единиц.

Вместо * подставьте один из нужных вам временных интервалов: days, weeks, months, quarters, years

Например если вам необходимо получить 5 следующих дней воспользуйтесь следующим кодом.

# получить 5 следующих дней не включая текущую дату
next5days <- next_n_days(n = 5)

# получить 5 следующих дней включая текущую дату
next5days_wt <- next_n_days(n = 5, include_current = T)

custom_period

Данная функция позволяет создавать объект класса tpr с любым произвольным периодом.

period1 <- custom_period("2019-09-03", "2019-09-11")