Yin aiki tare da kwanan wata a cikin R (asali damar iya aiki, kazalika da fakitin lubridate da timeperiodsR)

Samu kwanan kwanan wata a cikin kowane yaren shirye-shirye, aiki daidai da "Hello duniya!" Harshen R ba banda.

A cikin wannan labarin, za mu dubi yadda aiki tare da kwanan wata ke aiki a cikin ainihin ma'anar harshen R, da kuma duba fakiti masu amfani da yawa waɗanda ke fadada iyawar sa yayin aiki tare da kwanakin:

  • lubridate - kunshin da ke ba ku damar yin lissafin lissafi tsakanin kwanakin;
  • timeperiodsR - kunshin don aiki tare da tazarar lokaci da abubuwan haɗin su.

Yin aiki tare da kwanan wata a cikin R (asali damar iya aiki, kazalika da fakitin lubridate da timeperiodsR)

Abubuwa

Idan kuna sha'awar nazarin bayanai, kuma musamman harshen R, kuna iya sha'awar na telegram и youtube tashoshi. Yawancin abun ciki an sadaukar da shi ga yaren R.

  1. Aiki tare da kwanan wata a cikin asali R syntax
    1.1. Maida rubutu zuwa kwanan wata
    1.2. Ciro abubuwan kwanan wata a cikin ainihin R
  2. Yin aiki tare da kwanakin ta amfani da fakitin mai
    2.1. Maida rubutu zuwa kwanan wata ta amfani da mai
    2.2. Ciro abubuwan kwanan kwanan wata ta amfani da fakitin mai
    2.3. Ayyukan lissafi tare da kwanan wata
  3. Sauƙaƙen aiki tare da lokuta, fakitin lokaci R
    3.1. Tsakanin lokaci a cikin lokutan lokaciR
    3.2. Tace vector na kwanan wata ta amfani da timeperiodsR
  4. ƙarshe

Aiki tare da kwanan wata a cikin asali R syntax

Maida rubutu zuwa kwanan wata

Basic R yana da saitin ayyuka don aiki tare da kwanakin. Rashin lahani na asali na asali shine batun sunaye da gardama sun warwatse sosai kuma ba su da wata alaƙa ta hankali. Koyaya, kuna buƙatar sanin mahimman ayyukan harshe, don haka za mu fara da su.

Mafi yawan lokuta lokacin loda bayanai zuwa R, daga fayilolin csv, ko wasu kafofin, kuna karɓar kwanan wata azaman rubutu. Don canza wannan rubutu zuwa nau'in bayanai daidai, yi amfani da aikin 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"

da default as.Date() yana karɓar kwanan wata a cikin tsari biyu: YYYY-MM-DD ko YYYY/MM/DD.
Idan saitin bayanan ku ya ƙunshi kwanakin ta wani tsari, kuna iya amfani da hujjar format.

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

format yana karɓar masu aiki a cikin nau'in kirtani yana nuna kowane tazara na lokaci da tsarin sa; ana nuna ƙimar da aka fi amfani da su a cikin teburin da ke ƙasa:

Tsarin
Description

%d
Lambar rana a wata

%a
Gajarta sunan ranar mako

%A
Cikakken sunan ranar mako

%w
Adadin ranar mako (0-6, inda 0 ke Lahadi)

%m
Ƙididdigar wata mai lamba biyu (01-12)

%b
Gajarta sunan watan (apr, mar,…)

%B
Cikakken sunan wata

%y
Nadi mai lamba biyu na shekara

%Y
Nadi na shekara huɗu mai lamba

%j
Lambar rana a cikin shekara (001-366)

%U
Adadin mako a cikin shekara (00 - 53), farkon mako Lahadi

%W
Lambar mako a cikin shekara (00 - 53), farkon mako Litinin

Saboda haka, "Satumba 26, 2019" shine cikakken sunan watan, kwanan wata da shekara. Ana iya siffanta wannan tsarin kwanan wata ta amfani da masu aiki kamar haka:"%B %d, %Y".

Inda:

  • %B - Cikakken sunan watan
  • %d - Adadin yini a wata
  • %Y - Nadi na shekara huɗu mai lamba

Lokacin kwatanta tsarin kwanan wata, yana da mahimmanci a haɗa duk ƙarin haruffa daga igiyoyin ku, kamar su dashes, waƙafi, lokaci, sarari, da sauransu. A cikin misali na, "Satumba 26, 2019", akwai waƙafi bayan kwanan wata, kuma kuna buƙatar sanya waƙafi a cikin bayanin tsarin:"%B %d, %Y".

Akwai yanayi lokacin da kuka karɓi kwanan wata wanda ba wai kawai bai dace da daidaitattun tsari ba (YYYY-MM-DD ko YYYY/MM/DD), amma kuma a cikin yaren da ya bambanta da wanda aka girka akan tsarin aiki. Misali, kun zazzage bayanai inda aka nuna ranar kamar haka: "December 15, 2019." Kafin canza wannan kirtani zuwa kwanan wata, kuna buƙatar canza wurin.

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

Ciro abubuwan kwanan wata a cikin ainihin R

Babu ayyuka da yawa a cikin ainihin R waɗanda ke ba ku damar cire kowane ɓangaren kwanan wata daga abin aji Rana.

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

Baya ga babban abu ajin Rana a cikin ainihin R akwai ƙarin nau'ikan bayanai guda 2 waɗanda ke adana tambarin lokaci: POSIXlt, POSIXct. Babban bambanci tsakanin waɗannan azuzuwan da Rana shine ban da ranar da suke ajiye lokaci.

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

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

# "POSIXct" "POSIXt"

aiki Sys.time() yana dawo da kwanan wata da lokaci na yanzu a cikin tsari POSIXct. Wannan tsari yayi kama da ma'ana zuwa LOKACI, kuma yana adana adadin seconds tun farkon zamanin UNIX (tsakar dare (UTC) daga Disamba 31, 1969 zuwa Janairu 1, 1970).

Класс POSIXlt Hakanan yana adana lokaci da kwanan wata, da duk abubuwan da aka haɗa su. Saboda haka, abu ne mai tsari mai rikitarwa, amma daga gare shi yana da sauƙin samun kowane ɓangaren kwanan wata da lokaci saboda a gaskiya POSIXlt shi list.

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

Mayar da lamba da bayanan rubutu zuwa tsari POSIX* za'ayi ta ayyuka as.POSIXct() и as.POSIXlt(). Waɗannan ayyuka suna da ƙaramin jeri na gardama.

  • x — Lamba, kirtani ko abun aji Rana, wanda ke buƙatar canzawa;
  • tz - Yankin lokaci, tsoho "GMT";
  • format - Bayanin tsarin kwanan wata wanda aka wakilta bayanan da aka wuce zuwa gardamar x;
  • asalin - Ana amfani da shi kawai lokacin canza lamba zuwa POSIX; dole ne ku wuce abu na kwanan wata da lokaci daga abin da aka ƙidaya daƙiƙa a cikin wannan hujja. Yawanci ana amfani dashi don fassara daga UNIXTIME.

Idan bayanin kwanan ku da lokacin ku yana ciki LOKACI, to, don canza su zuwa kwanan wata bayyananne, za a iya karantawa, yi amfani da misali mai zuwa:

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

A asali zaku iya tantance kowane tambarin lokaci. Misali, idan bayananku sun ƙunshi kwanan wata da lokaci a matsayin adadin daƙiƙa tun Satumba 15, 2019 12:15 na yamma, sannan don canza shi zuwa amfani da kwanan wata:

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

Yin aiki tare da kwanakin ta amfani da fakitin mai

lubridate Wataƙila fakitin da ya fi shahara don aiki tare da kwanan wata a cikin yaren R. Yana ba ku ƙarin azuzuwan uku.

  • durations - duration, i.e. adadin daƙiƙa tsakanin tambura sau biyu;
  • lokaci - lokaci yana ba ka damar yin lissafin tsakanin kwanakin a cikin tazarar da mutum zai iya karantawa: kwanaki, watanni, makonni, da sauransu;
  • tazara - abubuwan da ke ba da wurin farawa da ƙarshen lokaci.

Ana aiwatar da shigar ƙarin fakiti a cikin yaren R ta amfani da daidaitaccen aikin install.packages().

Shigar da kunshin lubridate:

install.packages("lubridate")

Maida rubutu zuwa kwanan wata ta amfani da mai

Fakitin fasali lubridate yana sauƙaƙa tsarin canza rubutu zuwa kwanan wata, kuma yana ba ku damar aiwatar da duk wani aiki na ƙididdiga tare da kwanan wata da lokuta.

Ayyukan zasu taimaka maka samun kwanan wata ko kwanan wata da lokaci today() и now().

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

Don canza kirtani zuwa kwanan wata a ciki lubridate Akwai dukan iyali na ayyuka waɗanda ko da yaushe sunansu sun ƙunshi haruffa uku, kuma suna nuna jerin abubuwan abubuwan kwanan wata:

  • y - shekara
  • m - wata
  • d - rana

Jerin ayyuka don canza rubutu zuwa kwanan wata ta hanyar mai

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

Wasu misalan don canza kirtani zuwa kwanan wata:

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

Kamar yadda kuke gani lubridate Ya fi dacewa sosai wajen gane kwatancen kwanan wata a matsayin rubutu, kuma yana ba ku damar canza rubutu zuwa kwanan wata ba tare da amfani da ƙarin masu aiki don kwatanta tsarin ba.

Ciro abubuwan kwanan kwanan wata ta amfani da fakitin mai

Hakanan amfani lubridate zaka iya samun kowane bangare daga kwanan wata:

dt <- ymd("2017 jan 21")

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

Ayyukan lissafi tare da kwanan wata

Amma mafi mahimmanci da aiki na asali lubridate shine ikon yin ayyuka daban-daban na lissafi tare da kwanan wata.

Ana yin zagayen kwanan wata da ayyuka guda uku:

  • floor_date - zagayawa zuwa mafi kusa
  • ceiling_date - zagayawa zuwa lokacin nan gaba
  • round_date - zagaye zuwa mafi kusa lokaci

Kowane ɗayan waɗannan ayyuka yana da hujja naúrarwanda ke ba ku damar tantance rukunin zagaye: na biyu, minti, awa, rana, sati, wata, watanni, kwata, kakar, rabin shekara, shekara

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

Don haka bari mu gano yadda za a sami kwanan wata da kwana 8 bayan kwanan wata da kuma yin wasu lissafin lissafi daban-daban tsakanin kwanakin biyu.

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

Sauƙaƙen aiki tare da lokuta, fakitin lokaci R.

timeperiodsR - sabon kunshin don aiki tare da kwanakin da aka buga akan CRAN a cikin Satumba 2019.

Shigar da kunshin timeperiodsR:

install.packages("timeperiodsR")

Babban maƙasudin shine don ƙayyade takamaiman tazarar lokaci dangane da kwanan wata da aka bayar. Misali, ta amfani da ayyukansa zaka iya cikin sauki:

  • Samu makon da ya gabata, wata, kwata ko shekara a cikin R.
  • Samu takamaiman adadin tazara na lokaci dangane da kwanan wata, misali makonni 4 da suka gabata.
  • Yana da sauƙi don cire abubuwan da suka haɗa daga tazarar lokaci: farkon da ƙarshen kwanan wata, adadin kwanakin da aka haɗa a cikin tazara, duk jerin kwanakin da aka haɗa a ciki.

Sunan duk ayyukan fakitin timeperiodsR suna da hankali kuma sun ƙunshi sassa biyu: shugabanci_tazara, inda:

  • shugabanci a cikin abin da kuke buƙatar matsawa zuwa kwanan wata da aka bayar: last_n, baya, wannan, gaba, next_n.
  • wucin gadi tazara don lissafin lokacin: rana, mako, wata, kwata, shekara.

Cikakken saitin ayyuka:

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

Tsakanin lokaci a cikin lokutan lokaciR

Waɗannan ayyuka suna da amfani a lokuta inda kuke buƙatar gina rahotanni dangane da bayanai daga makon da ya gabata ko wata. Don samun watan da ya gabata, yi amfani da aikin suna iri ɗaya previous_month():

prmonth <- previous_month()

Bayan haka za ku sami wani abu na farko aji tpr, daga abin da za a iya samun waɗannan abubuwan cikin sauƙi:

  • farkon lokacin, a misalinmu wannan shine watan na ƙarshe
  • kwanan ƙarshen zamani
  • adadin kwanakin da aka haɗa a cikin lokacin
  • jerin kwanakin da aka haɗa a cikin lokacin

Hakanan, zaku iya samun kowane ɗayan abubuwan da aka gyara ta hanyoyi daban-daban:

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

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

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

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

Hakanan zaka iya samun kowane ɗayan abubuwan ta amfani da hujja part, wanda ke cikin kowane ɗayan ayyukan kunshin. Ƙididdiga masu yiwuwa: farawa, ƙarshe, jere, tsayi.

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

Don haka bari mu kalli duk gardamar da ke akwai a cikin ayyukan fakitin timeperiodsR:

  • x - Ranar tunani daga abin da za a ƙididdige lokacin lokaci, kwanan wata ta hanyar tsoho;
  • n - Adadin tazarar da za a haɗa a cikin lokacin, misali makonni 3 da suka gabata;
  • part - Wani bangare na abu tpr kana bukatar ka samu, ta tsohuwa all;
  • week_start - Hujjar tana nan ne kawai a cikin ayyuka don aiki tare da makonni, kuma tana ba ku damar saita adadin ranar mako wanda za a yi la'akari da farkon sa, ta hanyar tsoho, farkon mako shine Litinin, amma zaku iya saita kowane daga 1 - Litinin zuwa 7 - Lahadi.

Don haka, zaku iya ƙididdige kowane lokaci dangane da na yanzu ko kowace ranar da aka bayar; ga wasu ƙarin misalai:

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

Oktoba 6 shine Lahadi:
Yin aiki tare da kwanan wata a cikin R (asali damar iya aiki, kazalika da fakitin lubridate da timeperiodsR)

Muna buƙatar lokaci wanda, dangane da Oktoba 6, zai ɗauki makonni 3 da suka gabata. Ba tare da makon da ya haɗa da Oktoba 6 da kanta ba. Don haka, wannan shine lokacin daga 9 ga Satumba zuwa 29 ga Satumba.

Yin aiki tare da kwanan wata a cikin R (asali damar iya aiki, kazalika da fakitin lubridate da 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

A cikin wannan misalin, muna sha'awar watan da ya kasance watanni 4 da suka gabata, idan muka fara daga 16 ga Satumba, 2019, to Mayu 2019 ne.

Tace vector na kwanan wata ta amfani da timeperiodsR

Don tace kwanan wata timeperiodsR Akwai masu aiki da yawa:

  • % left_out% - yana kwatanta abubuwa ajin tpr guda biyu, kuma yana mayar da ƙimar daga hagu wanda ya ɓace a dama.
  • % left_in% - yana kwatanta abubuwa biyu na ajin tpr, kuma yana mayar da kwanakin daga abin hagu wanda aka haɗa a cikin dama.
  • %right_out% - yana kwatanta abubuwa ajin tpr guda biyu, kuma yana dawo da ƙimar daga dama wanda ya ɓace daga hagu.
  • %right_in% - yana kwatanta abubuwa guda biyu na ajin tpr, kuma ya dawo da kwanan wata daga abin da ya dace wanda ke cikin hagu ɗaya.

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

A cikin kunshin timeperiodsR akwai na hukuma, harshen Rashanci YouTube lissafin waƙa.

ƙarshe

Mun bincika dalla-dalla azuzuwan abubuwan da aka tsara a cikin yaren R don aiki tare da kwanan wata. Hakanan yanzu zaku iya aiwatar da ayyukan ƙididdiga akan ranaku, da sauri samun kowane lokaci ta amfani da kunshin timeperiodsR.

Idan kuna sha'awar yaren R, ina gayyatar ku kuyi subscribing channel dina na telegram R4 marketing, wanda a cikinsa nake raba abubuwa masu amfani a kullun game da amfani da yaren R wajen magance matsalolin ku na yau da kullun.

source: www.habr.com

Add a comment