Opus cum palmis in R (capilitatis fundamentalis, tum fasciculi lubrici et timeperiodsR)

Hodiernum diem obtine in lingua programmandi, operandi aequipollens "Salve mundus!" In r lingua nulla est exceptio.

In hoc articulo videbimus quomodo operando cum palmis operando in fundamentali syntaxi linguae R, et etiam inspiciamus varias sarcinas utiles quae suas facultates cum palmis laborantibus expandunt;

  • lubridate — sarcina quae permittit te arithmeticam calculi inter dies praestare;
  • timeperiodsR — sarcina ad operandum per intervalla temporis et earum partium.

Opus cum palmis in R (capilitatis fundamentalis, tum fasciculi lubrici et timeperiodsR)

contentus

Si interesse in analysi analysi, et praesertim lingua R, interesse potes in mea telegraphum и YouTube rivos. Pleraque contenti r lingua dedicata est.

  1. Opus cum dies in basic R syntax
    1.1. Conversus textum ad date
    1.2. Eiciendis date components in basic R
  2. Operantes cum dies utens lubrica sarcina
    2.1. Conversus textum ad date usura lubricate
    2.2. Extracting date components utens lubrica sarcina
    2.3. Arithmetica operationes cum temporibus
  3. Simplicior opus cum periodis, timeperiodsR sarcina
    3.1. Temporis intervalla timeperiodsR
    3.2. Filtering vector temporum utens timeperiodsR
  4. conclusio,

Opus cum dies in basic R syntax

Conversus textum ad date

Basic R constituit functiones pro operandi cum temporibus. Praeiudicium syntaxis fundamentalis est quod casus functionis nominum et argumentorum valde dissipatus est et nexum logicum fere nullum habet. Sed functiones fundamentales linguae nosse debes, ut ab illis incipiamus.

Plerumque cum notitias onerantes in R, ex fasciculis csv, vel aliis fontibus, diem pro textu accipis. Ad hunc textum convertendum ad rectam notitia generis, functione utere as.Date().

# создаём текстовый вектор с датами
my_dates <- c("2019-09-01", "2019-09-10", "2019-09-23")

# проверяем тип данных
class(my_dates)

#> [1] "character"

# преобразуем текст в дату
my_dates <- as.Date(my_dates)

# проверяем тип данных
class(my_dates)

#> [1] "Date"

per default as.Date() accipit date in duas formas; YYYY-MM-DD aut YYYY/MM/DD.
Si data copia paginas in alia forma contineat, argumento uti potes format.

as.Date("September 26, 2019", format = "%B %d, %Y")

forma operatores in forma chordarum admittit pro quolibet temporis intervallo et eius forma, valores plerumque usi sunt in tabula infra ostenduntur:

forma
Description

%d
Dies numerus in mense

%a
Abbreviationem pro nomine diei hebdomadis

%A
Plena nomine die sabbati

%w
Numerus diei hebdomadis (0-6, ubi 0 est Dominica)

%m
Duo digiti mensis designatio (01-12)

%b
Abbreviatio mensis nominis (apr, mar, …)

%B
Plena mensis nomen eius

%y
Duo digiti anni designatio

%Y
Quattuor digiti anni designatio

%j
Dies numerus in anno (001 - 366)

%U
Numerus hebdomadis in anno (00 - 53), ineunte hebdomade dominica

%W
Hebdomadae numerus in anno (00 - 53), initium hebdomadis Lunae

Itaque "septembris XXVI, MMXIX" plenum nomen est mensis, diei et anni. Haec forma moderna utens operariorum sic describi potest:"%B %d, %Y".

ubi:

  • %B - plena nomen mensis
  • %d - Number diei in mense
  • %Y - Quattuor digiti anni designatio

Formam datam describens, refert omnes notas additas e filo includere, ut striis, commatibus, periodis, spatiis, et sic porro. In exemplo meo "26."%B %d, %Y".

Sunt condiciones cum diem accipias quae non solum non correspondet formae normae (YYYY-MM-DD or YYYY/MM/DD)sed etiam in lingua quae differt ab default qui in systemate operante inauguratus est. Exempli gratia, data es recepta ubi hoc modo indicatum est: “December 15, 2019”. Priusquam hanc chordam ad tempus convertas, necesse est ut locum mutes.

# Меняем локаль
Sys.setlocale("LC_TIME", "Russian")
# Конвертируем строку в дату
as.Date("Декабрь 15, 2019 г.", format = "%B %d, %Y")

Eiciendis date components in basic R

Non sunt multae functiones in R fundamentalibus quae te permittunt ex obiecto extrahere aliquam partem temporis Date.

current_date <- Sys.Date() # текущая дата
weekdays(current_date)     # получить номер дня недели
months(current_date)       # получить номер месяца в году
quarters(current_date)     # получить номер квартала в году

In addition ad principale obiectum classis Date in basic R sunt 2 plures notitiae rationes quae indicationem reponunt; POSIXlt, POSIXct. Praecipua differentia inter has classes et Date quod praeter tempus reponunt.

# получить текущую дату и время
current_time <- Sys.time()

# узнать класс объекта current_time 
class(current_time)

# "POSIXct" "POSIXt"

munus Sys.time() refert hodiernam diem ac tempus in forma POSIXct. Haec forma similis significationis est UNIXTIMEac numerum secundorum ab initio Unix era . Media nocte (UTC) a die 31 decembris 1969 ad 1 Ianuarii 1970).

Класс POSIXlt tempus etiam et tempus et omnia sua componit. Obiectum est igitur multipliciori structurae, sed ex quo facile est quodlibet tempus et tempus in facto POSIXlt quod album.

# Получаем текущую дату и время
current_time_ct <- Sys.time()

# Преобразуем в формат POSIXlt
current_time_lt <- as.POSIXlt(current_time_ct)

# извлекаем компоненты даты и времени
current_time_lt$sec   # секунды
current_time_lt$min   # минуты
current_time_lt$hour  # часы
current_time_lt$mday  # день месяца
current_time_lt$mon   # месяц
current_time_lt$year  # год
current_time_lt$wday  # день недели
current_time_lt$yday  # день года
current_time_lt$zone  # часовой пояс

Convertere numerorum et textuum notitia ad formats POSIX* per munera as.POSIXct() и as.POSIXlt(). Haec functiones parvas rationes habent.

  • x - Number, filum vel genus object Datequae converti debet;
  • tz — Time zona, default "GMT";
  • format — Descriptionis formati formati in quo data ad x argumentum transmissa repraesentatur;
  • origo — Solus usus est cum numerum ad POSIX convertens, date objectum et tempus transeundum, ex quo secundae huic argumento numerantur. Typice adhibita translatione ex UNIXTIME.

If your date and time information is in UNIXTIMEeasque convertere in notam perspicuam ac lectissimam, hoc exemplo utere;

# Конвертируем UNIXTIME в читаемую дату 
as.POSIXlt(1570084639,  origin = "1970-01-01")

In origine designare aliquem indicationem potes. Exempli gratia, si notitia tua continet diem et tempus secundum numerum secundorum ab 15 Septembris, 2019 12:15 post meridiem, ad usum temporis convertere:

# Конвертируем UNIXTIME в дату учитывая что начало отсчёта 15 сентября 2019 12:15
as.POSIXlt(1546123,  origin = "2019-09-15 12:15:00")

Operantes cum dies utens lubrica sarcina

lubridate Fortasse maxime popularis sarcina ad operandum cum palmis in lingua R. praebet te tribus additis generibus.

  • durationes — duration, i.e. numero secundorum inter duo timestamps;
  • periodi - periodi permittunt te computare inter dies in intervallis hominum perlectis: dies, menses, hebdomades, et sic porro;
  • intervalla, quae praebent principium et finem puncto tempore.

Installation additarum fasciculorum in R lingua exercetur utens functionis vexillum install.packages().

Installing in sarcina lubridate:

install.packages("lubridate")

Conversus textum ad date usura lubricate

Package features lubridate signanter simplicioremus processum convertendi textum in diem, et etiam permittite ut quaslibet operationes arithmeticas cum temporibus et temporibus exsequi permittat.

Munera auxiliabuntur tibi hodiernam diem vel diem ac tempus today() и now().

today() # текущая дата
now()   # текущая дата и время

Convertere filum ad date in lubridate Est tota familia officiorum, quarum nomina semper in tribus litteris constant, et ordinem partium indices indicant;

  • y - year
  • m - mensis
  • d - die

Index functionum pro textu convertendi ad date per lubricum

  • ymd()
  • ydm()
  • mdy()
  • myd()
  • dmy()
  • dym()
  • yq()

Exempla quaedam chordarum ad tempora convertendi:

ymd("2017 jan 21")
mdy("March 20th, 2019")
dmy("1st april of 2018")

Ut videre potes lubridate Multo efficacius est ad descriptiones modernas pro textu cognoscendas, et te permittit ut textum convertas ad date sine operatoribus additis ad formam describendam.

Extracting date components utens lubrica sarcina

Etiam utens lubridate vos can adepto aliqua pars a diem:

dt <- ymd("2017 jan 21")

year(dt)  # год
month(dt) # месяц
mday(dt)  # день в месяце
yday(dt)  # день в году
wday(dt)  # день недели

Arithmetica operationes cum temporibus

Sed maximus et turpis eget lubridate est facultas operandi varias arithmeticas cum temporibus.

Data rotundatio tribus muneribus peragitur;

  • floor_date - flectendis promunturiis ad proximum praeteritum tempus
  • ceiling_date - flectendis promunturiis in proximo futuri temporis
  • round_date - flectendis promunturiis in proximum tempus

Quaelibet harum functionum rationem habet unumquae permittit ut rotunditatem unitatis definias: secunda, minuta, hora, dies, septimana, mensis, bimonth, quadrans, tempus, medium annum, annum.

dt <- ymd("2017 jan 21")

round_date(dt, unit = "month")    # округлить до месяца
round_date(dt, unit = "3 month")  # округлить до 3 месяцев
round_date(dt, unit = "quarter")  # округлить до квартала
round_date(dt, unit = "season")   # округлить до сезона
round_date(dt, unit = "halfyear") # округлить до полугодия

Quare inspiciamus quomodo diem id est VIII dies post hodiernum diem et varias alias arithmeticas calculos inter duos dies facere.

today() + days(8)   # какая дата будет через 8 дней
today() - months(2) # какая дата была 2 месяца назад
today() + weeks(12) # какая дата будет через 12 недель
today() - years(2)  # какая дата была 2 года назад

Facilius opus cum periodis, sarcina timeperiodsR.

timeperiodsR — sarcina nova ad operandum cum temporibus quae in CRAN mense Septembri 2019 edita est.

Installing in sarcina timeperiodsR:

install.packages("timeperiodsR")

Praecipuum propositum est, ut certum temporis intervallum, quod ad tempus datum est, cito determinet. Verbi gratia, suis muneribus uti facile potes;

  • Praeterita hebdomada, mensis, quartae vel anni in R. obtine.
  • Numerum temporis intervalli ad tempus adipiscendum, exempli gratia praeteritum 4 septimanarum.
  • Facile est excerpere partes inde temporis inde: tempus initium et finis, numerus dierum interuallo comprehensus, tota serie temporum inclusa.

Nomen omnium sarcina munera timeperiodsR intuitiva et ex duabus partibus constant; partem_spatiumUbi:

  • partem in quo debes movere relativum ad diem datum: last_n, prior, hoc, proxime, deinde_n.
  • tempus spatium computare tempus: diem, septimanam, mensem, quartam, annum.

Munera plena paro;

  • last_n_days()
  • last_n_weeks()
  • last_n_months()
  • last_n_quarters()
  • last_n_years()
  • previous_week()
  • previous_month()
  • previous_quarter()
  • previous_year()
  • this_week()
  • this_month()
  • this_quarter()
  • this_year()
  • next_week()
  • next_month()
  • next_quarter()
  • next_year()
  • next_n_days()
  • next_n_weeks()
  • next_n_months()
  • next_n_quarters()
  • next_n_years()
  • custom_period()

Temporis intervalla timeperiodsR

Munera haec sunt utilia in casibus in quibus relationes aedificare debes in notitia ex praeterito septimana vel mense. Ut per mensem, functione eiusdem nominis utere previous_month():

prmonth <- previous_month()

Post quem habebis prmonth class TPRex quo quae sequuntur facile obtineri potest;

  • initium periodi, in exemplo nostro hic est mensis ultimus
  • tempus finem date
  • numerus dierum includitur in tempore
  • ordo dies includitur in tempore

Possis autem quodlibet partium diversimode;

# первый день периода
prmonth$start
start(prmonth)

# последний день периода
prmonth$end
end(prmonth)

# последовательность дат
prmonth$sequence
seq(prmonth)

# количество дней входящих в период
prmonth$length
length(prmonth)

Potes etiam aliquem partium argumenti utentem parsqui in singulis fasciculis adest. Valores possibilis: initium, finis, series, longitudo.

previous_month(part = "start")    # начало периода
previous_month(part = "end")      # конец периода
previous_month(part = "sequence") # последовательность дат
previous_month(part = "length")   # количество дней в периоде

Intueamur igitur omnia argumenta quae in functionibus sarcina praesto sunt timeperiodsR:

  • x - Relatum tempus e quo tempus computabitur, date hodiernam per defaltam;
  • n — Intervalla numerus comprehendetur in periodo, ut priores 3 septimanas;
  • part - Quod pars objecti tpr vos postulo ut per defaltam all;
  • week_start — Argumentum adest tantum in functionibus ad operandum hebdomades, et permittit tibi ut constituas numerum diei hebdomadis, qui eius initium habendus erit: per defaltam, initium hebdomadis Lunae est, sed quemlibet exponere potes. 1 - Feria VII ad - Dominicam.

Sic computare potes aliquod tempus ad tempus hodiernum vel ad quemlibet alium diem datum, hic pauca sunt exempla;

# получить 3 прошлые недели
# от 6 октября 2019 года
# начало недели - понедельник
last_n_weeks(x = "2019-10-06", 
             n = 3, 
             week_start = 1)

 Time period: from  9 September of 2019, Monday to 29 September of 2019, Sunday

October 6 dies Solis est;
Opus cum palmis in R (capilitatis fundamentalis, tum fasciculi lubrici et timeperiodsR)

Tempus nobis opus est quod, quoad 6 Octobris, ante tres septimanas accipietur. Non possidet hebdomadem quae ipsum 3 Octobris includit. Itaque hoc tempus est a die 6 septembris ad 9 septembris.

Opus cum palmis in R (capilitatis fundamentalis, tum fasciculi lubrici et timeperiodsR)

# получить месяц отстающий на 4 месяца
# от 16 сентября 2019 года
previous_month(x = "2019-09-16", n = 4)

 Time period: from  1 May of 2019, Wednesday to 31 May of 2019, Friday

In hoc exemplo intersunt ante mensem qui erat ante 4 menses, si incipimus a die 16 Septembris MMXIX, tunc erat Maii MMXIX.

Filtering vector temporum utens timeperiodsR

Ad dies in filter timeperiodsR Plures sunt operatores:

  • %Left_out% - comparat duo tpr objecta classium, et redit valorem e sinistro qui in dextro uno deest.
  • %Left_in% - duo objecta generis tpr comparat, et redit dies e objecto sinistro, qui in dextro uno comprehenduntur.
  • % right_out% - comparat duo tpr objecta classium, et redit valorem a dextro qui deest e sinistro.
  • %right_in% - duo objecta generis tpr comparat, et redit dies a obiecto dextro, qui in sinistro adsunt.

period1 <- this_month("2019-11-07")
period2 <- previous_week("2019-11-07")

period1 %left_in% period2   # получить даты из period1 которые входят в period2
period1 %left_out% period2  # получить даты из period1 которые не входят в period2
period1 %right_in% period2  # получить даты из period2 которые входят в period1
period1 %right_out% period2 # получить даты из period2 которые не входят в period1

In sarcina timeperiodsR est officialis, lingua Russian- YouTube playlist.

conclusio,

Singillatim examinavimus classes rerum quae in R lingua designantur ad operandum cum temporibus. Nunc etiam operationes arithmeticae in temporibus conficere potes, et in sarcina quamlibet temporis momenta cito obtine timeperiodsR.

Si interesse in lingua R, te invitamus ut subscribas canali meo telegrapho R4marketing, in qua cottidie utiles materias communico de usu linguae R. in solvendis quaestionibus tuis cotidianis.

Source: www.habr.com

Add a comment