Kushanda nemazuva muR (yakakosha kugona, pamwe nerubridate uye timeperiodsR mapakeji)

Tora zuva razvino mune chero mutauro wechirongwa, kushanda kwakaenzana ne "Mhoro nyika!" Mutauro weR hauna musiyano.

Muchinyorwa chino, isu tichatarisa kuti kushanda nemazuva kunoshanda sei mune yekutanga syntax yemutauro weR, uye zvakare tarisa akati wandei anobatsira mapakeji anowedzera kugona kwawo kana uchishanda nemazuva:

  • lubridate - pasuru inokubvumira kuti uite masvomhu pakati pemazuva;
  • timeperiodsR - pasuru yekushanda nenguva dzenguva uye zvikamu zvadzo.

Kushanda nemazuva muR (yakakosha kugona, pamwe nerubridate uye timeperiodsR mapakeji)

Zviri mukati

Kana iwe uchifarira kuongorora data, uye kunyanya mutauro weR, unogona kufarira yangu teregiramu и YouTube channels. Zvizhinji zvemukati zvakatsaurirwa kumutauro weR.

  1. Kushanda nemazuva mune yekutanga R syntax
    1.1. Shandura mavara kuti ave zuva
    1.2. Kuburitsa zvinhu zvemazuva mubasic R
  2. Kushanda nemazuva uchishandisa lubridate package
    2.1. Shandura mavara kuti ave zuva uchishandisa lubridate
    2.2. Kubvisa zvinhu zvemazuva uchishandisa lubridate package
    2.3. Arithmetic mashandiro ane mazuva
  3. Basa rakarerutswa nenguva, timeperiodsR package
    3.1. Nguva dzenguva mumatimeperiodsR
    3.2. Kusefa vector yemazuva uchishandisa timeperiodsR
  4. mhedziso

Kushanda nemazuva mune yekutanga R syntax

Shandura mavara kuti ave zuva

Basic R ine seti yemabasa ekushanda nemazuva. Kuipa kweiyo syntax yakakosha ndeyekuti nyaya yemazita emabasa uye nharo yakapararira uye haina hukama hune musoro. Nekudaro, iwe unofanirwa kuziva iwo akakosha mabasa emutauro, saka isu tichatanga nawo.

Kazhinji kana uchirodha data muR, kubva kucsv mafaera, kana mamwe masosi, unogamuchira zuva semavara. Kuti ushandure chinyorwa ichi kune chaiyo data mhando, shandisa basa 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"

kubudikidza default as.Date() inogamuchira zuva mumhando mbiri: YYYY-MM-DD kana YYYY/MM/DD.
Kana yako data seti iine misi mune imwe fomati, unogona kushandisa nharo format.

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

urongwa inogamuchira vashandisi mune tambo fomu inoreva chero nguva yenguva uye fomati yayo; iyo inonyanya kushandiswa tsika inoratidzwa patafura pazasi:

Chimiro
tsananguro

%d
Nhamba yezuva mumwedzi

%a
Kudimburira zita rezuva revhiki

%A
Zita rakazara rezuva revhiki

%w
Nhamba yezuva revhiki (0-6, apo 0 ari Svondo)

%m
Mwedzi ine manhamba maviri (01-12)

%b
Kudimburirwa kwezita remwedzi (apr, mar, ...)

%B
Mwedzi wakazara zita

%y
Madijiti maviri makore kudanwa

%Y
Madijiti mana gore kudanwa

%j
Nhamba yezuva mugore (001 - 366)

%U
Nhamba yevhiki pagore (00 - 53), kutanga kwevhiki Svondo

%W
Vhiki nhamba mugore (00 - 53), kutanga kwevhiki Muvhuro

Saizvozvo, "Gunyana 26, 2019" ndiro zita rizere remwedzi, zuva uye gore. Iyi fomati yemazuva inogona kutsanangurwa uchishandisa vashandisi sezvizvi:"%B %d, %Y".

Kupi:

  • %B — Zita rakazara remwedzi
  • %d - Nhamba yezuva mumwedzi
  • %Y -Makore mana emadhijitari

Kana uchitsanangura chimiro chezuva, zvakakosha kuti uise mamwe mavara kubva mutambo yako, senge madheshi, koma, nguva, nzvimbo, zvichingodaro. Mumuenzaniso wangu, "Gunyana 26, 2019", pane comma mushure mezuva, uye iwe unofanirwawo kuisa koma mune tsananguro yefomati:"%B %d, %Y".

Pane mamiriro ezvinhu paunogamuchira zuva risingaenderane neakajairwa mafomati (YYYY-MM-DD kana YYYY/MM/DD), asiwo mumutauro unosiyana newakagara wakaiswa pane yako yekushandisa system. Semuenzaniso, wakadhawunirodha data uko zuva rinoratidzwa seizvi: "15 Zvita 2019." Usati washandura tambo iyi kuita zuva, unofanirwa kushandura nzvimbo.

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

Kuburitsa zvinhu zvemazuva mubasic R

Iko hakuna akawanda mabasa mune yakakosha R iyo inokutendera iwe kubvisa chero chikamu chezuva kubva mukirasi chinhu zuva.

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

Kuwedzera kune chikuru chinhu kirasi zuva mu basic R pane maviri mamwe marudzi edata anochengeta timestamp: POSIXlt, POSIXct. Musiyano mukuru pakati pemakirasi aya uye zuva ndiko kuti kuwedzera pazuva ravanochengeta nguva.

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

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

# "POSIXct" "POSIXt"

shanda Sys.time() inodzorera zuva razvino uye nguva mufomati POSIXct. Iyi fomati yakafanana muchirevo ne UNIXTIME, uye inochengeta nhamba yemasekonzi kubvira pakutanga kweUNIX nguva (pakati pehusiku (UTC) kubva Zvita 31, 1969 kusvika Ndira 1, 1970).

Chikoro POSIXlt inochengetawo nguva uye zuva, uye zvese zvikamu zvavo. Naizvozvo, chinhu chine chimiro chakaomesesa, asi kubva kwazviri nyore kuwana chero zuva uye nguva chikamu nekuti. saizvozvo POSIXlt izvozvo Pamazita.

# Получаем текущую дату и время
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  # часовой пояс

Kushandura data yenhamba uye zvinyorwa kuita mafomati POSIX* zvichiitwa nemabasa as.POSIXct() и as.POSIXlt(). Aya mabasa ane diki diki renharo.

  • x - Nhamba, tambo kana chinhu chekirasi zuva, iyo inoda kushandurwa;
  • tz - Nguva yenguva, default "GMT";
  • fomati - Tsananguro yefomati yemazuva umo iyo data yakapfuudzwa kune x nharo inomiririrwa;
  • mabviro - Inoshandiswa chete kana uchishandura nhamba kuita POSIX; iwe unofanirwa kupfuudza chinhu chezuva uye nguva kubva iyo masekonzi anoverengerwa kuita iyi nharo. Inonyanya kushandiswa kushandura kubva kuUNIXTIME.

Kana ruzivo rwako rwezuva uye nguva rwuri mukati UNIXTIME, wozoashandura kuita zuva rakajeka, rinoverengwa, shandisa muenzaniso unotevera:

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

Kwakabva iwe unogona kutsanangura chero chitambi chenguva. Semuenzaniso, kana data rako riine zuva uye nguva senhamba yemasekonzi kubva Gunyana 15, 2019 12:15 pm, wozoishandura kuita zuva rekushandisa:

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

Kushanda nemazuva uchishandisa lubridate package

lubridate Pamwe iyo inonyanya kufarirwa pasuru yekushanda nemazuva mumutauro weR. Inokupa iwe mamwe makirasi matatu ekuwedzera.

  • durations - duration, i.e. nhamba yemasekonzi pakati pezvitambi zviviri;
  • nguva - nguva inokubvumira kuti uverenge pakati pemazuva muzvikamu zvinoverengwa nevanhu: mazuva, mwedzi, mavhiki, zvichingodaro;
  • intervals - zvinhu zvinopa pekutangira nekuguma nenguva.

Kuiswa kwemamwe mapakeji mumutauro weR kunoitwa uchishandisa iyo yakajairwa basa install.packages().

Kuisa pasuru lubridate:

install.packages("lubridate")

Shandura mavara kuti ave zuva uchishandisa lubridate

Package features lubridate kurerutsa maitiro ekushandura mameseji kuita zuva, uye zvakare inobvumidza iwe kuita chero arithmetic mashandiro ane misi nenguva.

Iwo mabasa achakubatsira iwe kuwana zuva razvino kana zuva uye nguva today() и now().

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

Kushandura tambo kuita date in lubridate Kune mhuri yese yemabasa ayo mazita anogara aine mavara matatu, uye anoratidza kutevedzana kwezvikamu zvemazuva:

  • y - gore
  • m - mwedzi
  • d - zuva

Rondedzero yemabasa ekushandura mavara kusvika nhasi kuburikidza nelubridate

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

Mimwe mienzaniso yekushandura tambo kuita mazuva:

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

Sezvauri kuona lubridate Inonyanya kushanda pakuziva tsananguro yemazuva semavara, uye inokutendera kuti uchinje mameseji kuti ave azvino usingashandisi mamwe maopareta kutsanangura fomati.

Kubvisa zvinhu zvemazuva uchishandisa lubridate package

Kushandisa zvakare lubridate unogona kuwana chero chikamu kubva pazuva:

dt <- ymd("2017 jan 21")

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

Arithmetic mashandiro ane mazuva

Asi iyo inonyanya kukosha uye yakakosha kushanda lubridate ndiko kugona kuita akasiyana arithmetic oparesheni nemazuva.

Date kutenderera kunoitwa nemabasa matatu:

  • floor_date — kutenderedza kunguva yakapfuura
  • ceiling_date — kutenderedza kunguva iri pedyo
  • round_date - kutenderera kusvika kunguva iri pedyo

Rimwe nerimwe remabasa aya rine nharo chikwataiyo inokutendera kuti utsanangure iyo inotenderedza unit: yechipiri, miniti, awa, zuva, vhiki, mwedzi, mwedzi, kota, mwaka, hafu yegore, gore

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") # округлить до полугодия

Saka ngationei kuti tingawana sei zuva riri mazuva masere mushure mezuva razvino uye toita mamwe masvomhu akasiyana siyana pakati pemazuva maviri aya.

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

Basa rakarerutswa nenguva, timeperiodsR package.

timeperiodsR - pasuru nyowani yekushanda nemazuva yakaburitswa paCRAN munaGunyana 2019.

Kuisa pasuru timeperiodsR:

install.packages("timeperiodsR")

Chinangwa chikuru ndechekukurumidza kuona imwe nguva yenguva inoenderana nezuva rakapihwa. Semuenzaniso, uchishandisa mabasa ayo unogona nyore:

  • Tora svondo rapfuura, mwedzi, kota kana gore muR.
  • Wana nhamba yakatarwa yenguva dzenguva maererano nezuva, semuenzaniso mavhiki mana apfuura.
  • Zviri nyore kubvisa zvikamu zvaro kubva panguva inoguma yenguva: zuva rekutanga uye rekupedzisira, nhamba yemazuva anosanganisirwa mukati menguva, kutevedzana kwese kwemazuva anosanganisirwa mairi.

Zita remabasa ese epasuru timeperiodsR ari intuitive uye ane zvikamu zviviri: nzira_chinguvakupi:

  • nzira mauri iwe unofanirwa kutamira kune rimwe zuva rakapihwa: last_n, yapfuura, iyi, inotevera, inotevera_n.
  • zvenguva chinguva kuverenga nguva: zuva, vhiki, mwedzi, kota, gore.

Seti yakazara yemabasa:

  • 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()

Nguva dzenguva mumatimeperiodsR

Aya mabasa anobatsira mune zviitiko apo iwe unofanirwa kuvaka mishumo zvichienderana nedata kubva svondo rapfuura kana mwedzi. Kuti uwane mwedzi wekupedzisira, shandisa basa rezita rimwe chete previous_month():

prmonth <- previous_month()

Mushure mezvo iwe uchava nechinhu mwedzi kirasi tpr, kubva kune izvo zvinotevera zvikamu zvinogona kuwanikwa nyore:

  • zuva rekutanga renguva, mumuenzaniso wedu uyu mwedzi wekupedzisira
  • nguva yekupedzisira zuva
  • nhamba yemazuva akabatanidzwa munguva
  • kutevedzana kwemazuva akabatanidzwa munguva

Uyezve, iwe unogona kuwana chimwe nechimwe chezvikamu nenzira dzakasiyana:

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

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

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

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

Iwe unogona zvakare kuwana chero chezvikamu uchishandisa iyo nharo chidimbu, iyo iripo mune yega yega pasuru mabasa. Zvinogoneka kukosha: kutanga, kupera, kutevedzana, kureba.

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

Saka ngatitarisei kune ese nharo dziripo mupakeji mabasa timeperiodsR:

  • x - Zuva rereferensi kubva painoverengerwa nguva yenguva, zuva razvino nekukasira;
  • n - Huwandu hwenguva dzinozoverengerwa munguva, semuenzaniso mavhiki matatu apfuura;
  • part - Ndeipi chikamu chechinhu tpr unofanira kuwana, nekusingaperi all;
  • week_start - Nharo iripo chete mumabasa ekushanda nemavhiki, uye inokubvumira kuti uise nhamba yezuva revhiki rinozoonekwa sekutanga kwayo. 1 - Muvhuro kusvika 7 - Svondo.

Saka, unogona kuverenga chero nguva inoenderana neyazvino kana chero zuva rakapihwa; heino mimwe mienzaniso mishoma:

# получить 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

Gumiguru 6 iSvondo:
Kushanda nemazuva muR (yakakosha kugona, pamwe nerubridate uye timeperiodsR mapakeji)

Tinoda nguva iyo, maererano naGumiguru 6, inotora mavhiki matatu apfuura. Kwete kusanganisira svondo rinosanganisira Gumiguru 3 pachayo. Saizvozvo, iyi ndiyo nguva kubva munaGunyana 6 kusvika Gunyana 9.

Kushanda nemazuva muR (yakakosha kugona, pamwe nerubridate uye timeperiodsR mapakeji)

# получить месяц отстающий на 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

Mumuenzaniso uyu, isu tiri kufarira mwedzi wanga wapfuura mwedzi mina, kana tikatanga kubva Gunyana 4, 16, yaive Chivabvu 2019.

Kusefa vector yemazuva uchishandisa timeperiodsR

Kusefa mazuva mukati timeperiodsR Kune akawanda vashandisi:

  • % left_out% - inoenzanisa zvinhu zviviri zve tpr class, uye inodzorera kukosha kubva kuruboshwe iyo isipo mune yakarurama.
  • % left_in% - inoenzanisa zvinhu zviviri zve tpr class, uye inodzosa misi kubva pachinhu chekuruboshwe chinosanganisirwa mune cherudyi.
  • %right_out% - inoenzanisa zvinhu zviviri zve tpr class, uye inodzorera kukosha kubva kune yakarurama iyo isipo kubva kuruboshwe.
  • %right_in% - inofananidza zvinhu zviviri zvekirasi yetpr, uye inodzosa misi kubva kuchinhu chakarurama chiripo kuruboshwe.

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

Pa package timeperiodsR kune yepamutemo, yemutauro weRussia YouTube playlist.

mhedziso

Takaongorora zvakadzama makirasi ezvinhu zvakagadzirirwa mumutauro weR kushanda nemazuva. Zvakare ikozvino unogona kuita arithmetic mashandiro pamazuva, uye nekukurumidza kuwana chero nguva dzenguva uchishandisa package timeperiodsR.

Kana iwe uchifarira mutauro weR, ini ndinokukoka iwe kuti unyore kune yangu telegraph chiteshi R4marketing, umo ini ndinogovera zvinhu zvinobatsira zuva nezuva nezvekushandisa mutauro weR mukugadzirisa matambudziko ako ezuva nezuva.

Source: www.habr.com

Voeg