Ku shaqaynta taariikhaha ee luqadda R (sifada aasaasiga ah, iyo sidoo kale baakadaha saliidda iyo wakhtiyada R)

Hel taariikhda hadda jirta luuqad kasta oo barnaamij ah, hawlgal u dhigma "Hello world!" Luuqadda R maaha mid ka reeban.

Maqaalkan, waxaan eegi doonaa sida ku shaqeynta timirta ay u shaqeyso habka aasaasiga ah ee luqadda R, sidoo kale waxaan eegi doonaa dhowr xirmo oo faa'iido leh oo ballaariya awoodeeda marka la shaqeynayo taariikhaha:

  • lubridate - xirmo kuu ogolaanaya inaad sameyso xisaabinta xisaabta inta u dhaxaysa taariikhaha;
  • timeperiodsR - xirmo loogu talagalay in lagu shaqeeyo waqtiyo kala duwan iyo qaybahooda.

Ku shaqaynta taariikhaha ee luqadda R (sifada aasaasiga ah, iyo sidoo kale baakadaha saliidda iyo wakhtiyada R)

Tusmo

Haddii aad xiisaynayso falanqaynta xogta, iyo gaar ahaan luqadda R, waxaa laga yaabaa inaad xiisaynayso my telegram и youtube kanaalada. Inta badan waxa ku jira waxa u heellan luqadda R.

  1. Ku shaqaynta timirta ee aasaasiga ah ee R syntax
    1.1. U beddelo qoraalka taariikhda
    1.2. Soo saarista qaybaha taariikhda ee aasaasiga ah ee R
  2. Ku shaqeynta timirta iyadoo la isticmaalayo xirmada saliidda
    2.1. U beddelo qoraalka taariikhda adiga oo isticmaalaya saliid
    2.2. Soo saarista qaybaha taariikhda iyadoo la isticmaalayo xirmada saliidda
    2.3. Hawlaha xisaabinta ee leh timirta
  3. Shaqo la fududeeyay oo leh xilliyo, xirmo waqti-xilliyeedR
    3.1. Waqti udhaxeeya waqtiyada R
    3.2. Shaandhaynta tirada timirta iyadoo la isticmaalayo timeperiodsR
  4. gunaanad

Ku shaqaynta timirta ee aasaasiga ah ee R syntax

U beddelo qoraalka taariikhda

Aasaaska R waxa uu leeyahay hawlo kala duwan oo ku saabsan la shaqaynta taariikhaha. Khasaaraha ka jira ereyga aasaasiga ah ayaa ah in kiiska magacyada shaqada iyo doodaha ay aad u kala firirsan yihiin oo aysan dhab ahaantii lahayn xiriir macquul ah. Si kastaba ha noqotee, waxaad u baahan tahay inaad ogaato shaqooyinka aasaasiga ah ee luqadda, markaa waxaan ku bilaabi doonaa iyaga.

Inta badan markaad xogta ku shubayso R, faylasha csv, ama ilo kale, waxaad heshaa taariikh qoraal ahaan. Si aad qoraalkan ugu beddesho nooca xogta saxda ah, isticmaal shaqada 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"

by default as.Date() ku aqbala taariikhda laba qaab: YYY-MM-DD ama YYY/MM/DD.
Haddii xogtaada ay ka kooban tahay taariikho qaab kale ah, waxaad isticmaali kartaa doodda format.

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

format ku aqbal hawl wadeenada qaab xardhan oo tilmaamaya wakhti kasta iyo qaabkeeda; qiyamka inta badan la isticmaalo waxa lagu muujiyay shaxda hoose:

Qaabka
Description

%d
Tirada maalinta bisha

%a
Soo gaabinta magaca maalinta toddobaadka

%A
Magaca buuxa ee maalinta toddobaadka

%w
Tirada maalinta toddobaadka (0-6, halka 0 ay tahay Axad)

%m
Magacaabista bisha laba-god (01-12)

%b
Soo gaabinta magaca bisha (apr, mar,…)

%B
Magaca bisha oo buuxa

%y
Magacaabista laba-god ee sanadka ah

%Y
Magacaabida afar-god ee sanadka

%j
Tirada maalinta sanadka (001 - 366)

%U
Tirada toddobaadka ee sanadka (00 - 53), bilowga usbuuca Axadda

%W
Tirada toddobaadka ee sannadka (00 - 53), bilawga toddobaadka Isniinta

Sidaa darteed, "Sebtembar 26, 2019" waa magaca buuxa ee bisha, taariikhda iyo sanadka. Habka taariikhda waxa lagu sifayn karaa iyadoo la isticmaalayo hawlwadeenada sida soo socota:"%B %d, %Y".

Xagee:

  • %B - Magaca buuxa ee bisha
  • %d - Tirada maalinta bisha
  • %Y - Magacaabida afar-god ee sanadka

Marka aad sifaynayso qaabka taariikhda, waxaa muhiim ah in lagu daro dhammaan xarfaha dheeraadka ah ee xargahaaga, sida xargaha, hakadka, mudooyinka, meelaha bannaan, iyo wixii la mid ah. Tusaalahayga, "Sebtembar 26, 2019", waxaa jira comma ka dib taariikhda, oo sidoo kale waxaad u baahan tahay inaad geliso koma qaabka sharaxaadda:"%B %d, %Y".

Waxaa jira xaalado marka aad hesho taariikh aan kaliya u dhigmin qaababka caadiga ah (HAA-MM-DD ama YYYY/MM/DD), laakiin sidoo kale luqad ka duwan kan caadiga ah ee lagu rakibay nidaamkaaga hawlgalka. Tusaale ahaan, waxaad soo dejisay xogta halka taariikhda lagu tilmaamay sidan oo kale: "Diisambar 15, 2019." Kahor intaanad xadhigan u beddelin taariikh, waxaad u baahan tahay inaad beddesho goobta.

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

Soo saarista qaybaha taariikhda ee aasaasiga ah ee R

Ma jiraan hawlo badan oo ku jira aasaaska R oo kuu oggolaanaya inaad ka soo saarto qayb ka mid ah taariikhda shay fasalka Taariikhda.

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

Marka lagu daro fasalka shayga ugu muhiimsan Taariikhda Aasaaska R waxaa jira 2 nooc oo xog dheeraad ah oo kaydiya shaambada wakhtiga: POSIXlt, POSIXct. Farqiga ugu weyn ee u dhexeeya fasaladan iyo Taariikhda waa taas marka laga reebo taariikhda ay kaydiyaan wakhtiga.

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

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

# "POSIXct" "POSIXt"

function Sys.time() soo celisa taariikhda iyo wakhtiga hadda oo qaabaysan POSIXct. Habkani wuxuu la mid yahay macnaha WAQTIGII, oo kaydisa tirada ilbiriqsi tan iyo bilowgii xilligii UNIX (saqda dhexe (UTC) laga bilaabo Disembar 31, 1969 ilaa Janaayo 1, 1970).

Класс POSIXlt Waxa kale oo ay kaydisaa wakhtiga iyo taariikhda, iyo dhammaan qaybaha ay ka kooban yihiin. Sidaa darteed, waa shay leh qaab dhismeed aad u adag, laakiin kaas oo ay fududahay in la helo qayb kasta oo taariikhda iyo wakhtiga ah sababtoo ah dhab ahaan POSIXlt waxaa liiska.

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

U beddelashada xogta tirada iyo qoraalka qaabab POSIX* lagu fuliyay hawlo as.POSIXct() и as.POSIXlt(). Hawlahani waxay leeyihiin dood yar oo kooban.

  • x — Lambar, xadhig ama shay fasalka Taariikhda, oo u baahan in la beddelo;
  • tz - Aagga waqtiga, default "GMT";
  • qaabka - Qeexida qaabka taariikhda ee xogta loo gudbiyay x ay ka muuqato;
  • asal ahaan - Waxa loo isticmaalaa oo keliya marka nambar loo beddelayo POSIX; waa inaad dhaaftaa shay iyo wakhti taariikheed oo ilbiriqsiyo lagu tiriyo dooddan. Caadi ahaan loo isticmaalo tarjumaada laga bilaabo UNIXTIME.

Haddii macluumaadkaaga taariikhda iyo wakhtiga ay ku jiraan WAQTIGII, ka dib si aad ugu beddelato taariikh cad, oo la akhriyi karo, isticmaal tusaalahan soo socda:

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

Asalka waxaad ku qeexi kartaa wakhti kasta. Tusaale ahaan, haddii xogtaadu ka kooban tahay taariikhda iyo wakhtiga sida tirada ilbiriqsi tan iyo Sebtembar 15, 2019 12:15 pm, ka dib si aad ugu beddelato isticmaalka taariikhda:

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

Ku shaqeynta timirta iyadoo la isticmaalayo xirmada saliidda

lubridate Waxaa laga yaabaa in xirmada ugu caansan ee la shaqeynta taariikhaha ee luqadda R. Waxay ku siinaysaa saddex fasal oo dheeraad ah.

  • muddada - muddada, i.e. tirada ilbiriqsi ee u dhaxaysa laba jeer oo ku dhegsan;
  • muddo - xilliyadu waxay kuu oggolaanayaan inaad xisaabiso inta u dhaxaysa taariikhaha ee u dhexeeya aadanaha-akhrisan karo: maalmo, bilo, toddobaadyo, iyo wixii la mid ah;
  • dhexda - walxaha bixiya bilowga iyo dhammaadka wakhtiga.

Ku rakibida baakadaha dheeraadka ah ee luqadda R waxaa lagu fuliyaa iyadoo la adeegsanayo shaqada caadiga ah install.packages().

Ku rakibida xirmada lubridate:

install.packages("lubridate")

U beddelo qoraalka taariikhda adiga oo isticmaalaya saliid

Tilmaamaha xirmada lubridate si weyn u fududeeya habka qoraalka taariikhda, iyo sidoo kale kuu ogolaanaya inaad fuliso hawl kasta oo xisaab ah oo leh taariikho iyo waqtiyo.

Hawlaha ayaa kaa caawin doona inaad hesho taariikhda ama taariikhda iyo wakhtiga hadda today() и now().

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

Si loo beddelo xadhig taariikhda galay lubridate Waxaa jira qoys dhan oo hawlo ah oo magacyadoodu had iyo jeer ka kooban yihiin saddex xaraf, oo tilmaamaya taxanaha qaybaha taariikhda:

  • y - sano
  • m - bil
  • d - maalin

Liiska shaqooyinka loogu beddelo qoraalka taariikhda iyada oo loo marayo saliidda

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

Tusaalooyinka qaar ee u beddelka xargaha taariikhaha:

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

Sida aad u jeeddo lubridate Aad bay ugu hufan tahay in sharraxaadda taariikhda loo aqoonsado qoraal ahaan, waxayna kuu oggolaanaysaa inaad qoraalka taariikhda u beddesho adoon isticmaalin hawlwadeenno dheeraad ah si aad u qeexdo qaabka.

Soo saarista qaybaha taariikhda iyadoo la isticmaalayo xirmada saliidda

Sidoo kale isticmaalaya lubridate waxaad ka heli kartaa qayb kasta laga bilaabo taariikhda:

dt <- ymd("2017 jan 21")

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

Hawlaha xisaabinta ee leh timirta

Laakiin shaqada ugu muhiimsan iyo aasaasiga ah lubridate waa awooda lagu sameeyo hawlo xisaabeed oo kala duwan oo leh taariikho.

Soo koobida taariikhda waxaa lagu fuliyaa saddex hawlood:

  • floor_date - lagu soo koobo wakhtiga ugu dhow ee la soo dhaafay
  • ceiling_date - lagu soo koobo xiisadda mustaqbalka dhow
  • round_date - ku wareejinta waqtiga ugu dhow

Mid kasta oo ka mid ah hawlahan ayaa leh dood unitkaas oo kuu ogolaanaya inaad qeexdo cutubka wareega: labaad, daqiiqo, saacad, maalin, todobaad, bil, bimon, rubuc, xilli, nuska, sanadka

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

Haddaba aynu isla qaadano sidii aynu u heli lahayn taariikh 8 maalmood ka dib taariikhda hadda jirta oo aynu samayno xisaabaadka kale ee kala duwan ee xisaabaadka labada taariikhood.

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

Shaqo la fududeeyay oo leh xilliyo, xirmo waqti-xilliyeedR.

timeperiodsR - xirmo cusub oo lagula shaqeynayo taariikhaha oo lagu daabacay CRAN Sebtembar 2019.

Ku rakibida xirmada timeperiodsR:

install.packages("timeperiodsR")

Ujeedada ugu weyni waa in si dhakhso ah loo go'aamiyo wakhti go'an oo u dhexeeya taariikhda la cayimay. Tusaale ahaan, adoo isticmaalaya hawlihiisa waxaad si fudud u samayn kartaa:

  • Hel usbuucii la soo dhaafay, bishi, rubuc ama sanadkii R.
  • Hel tiro cayiman oo waqtiyo u dhaxe ah marka loo eego taariikhda, tusaale ahaan 4tii toddobaad ee la soo dhaafay.
  • Way fududahay in la soo saaro qaybaheeda muddada u dhaxaysa wakhtiga: bilawga iyo dhammaadka taariikhda, tirada maalmaha ku jira muddada u dhaxaysa, dhammaan taxanaha taariikhaha ee ku jira.

Magaca dhammaan hawlaha xirmada timeperiodsR waa dareen waxayna ka kooban yihiin laba qaybood: jihada_bareeg, meesha:

  • jihada taas oo aad u baahan tahay inaad u guurto marka loo eego taariikhda la bixiyay: last_n, hore, kan, ku xiga, next_n.
  • ku meel gaar ah bareeg si loo xisaabiyo muddada: maalin, toddobaad, bil, rubuc, sannad.

Shaqooyin dhammaystiran:

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

Waqti udhaxeeya waqtiyada R

Hawlahani waxay faa'iido u leeyihiin kiisaska aad u baahan tahay inaad dhisto warbixinno ku salaysan xogta usbuucii ama bishii la soo dhaafay. Si aad u hesho bisha ugu dambeysa, isticmaal shaqada isla magaca previous_month():

prmonth <- previous_month()

Taas ka dib waxaad yeelan doontaa shay hore fasalka tpr, kuwaas oo qaybaha soo socda si fudud looga heli karo:

  • taariikhda bilawga muddada, tusaale ahaan tani waa bishii ugu dambeysay
  • taariikhda dhamaadka muddada
  • tirada maalmaha ku jira muddada
  • taxanaha taariikhaha lagu daray muddada

Intaa waxaa dheer, waxaad ku heli kartaa mid kasta oo ka mid ah qaybaha siyaabo kala duwan:

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

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

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

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

Waxa kale oo aad heli kartaa mid kasta oo ka mid ah qaybaha adiga oo isticmaalaya doodda qayb, kaas oo ku jira mid kasta oo ka mid ah hawlaha xirmada. Qiimaha suurtogalka ah: bilawga, dhammaadka, isku xigxiga, dhererka.

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

Haddaba aan eegno dhammaan doodaha laga heli karo hawlaha xirmada timeperiodsR:

  • x - Taariikhda tixraaca ee laga soo bilaabo wakhtiga la xisaabin doono, taariikhda hadda jirta iyada oo aan loo eegin;
  • n - Tirada dhexda ee lagu dari doono muddada, tusaale ahaan 3dii toddobaad ee hore;
  • part - Waa kuwee qaybta shayga tpr waxaad u baahan tahay inaad hesho, by default all;
  • week_start - Dooddu waxay ku jirtaa oo keliya hawlaha toddobaadyada la shaqaynayo, waxayna kuu oggolaanaysaa inaad dejiso tirada maalinta toddobaadka ee loo tixgalinayo bilawgeeda, marka la eego, bilawga toddobaadku waa Isniin, laakiin waxaad samayn kartaa mid kasta 1 - Isniin ilaa 7 - Axad.

Sidaa darteed, waxaad xisaabin kartaa wakhti kasta oo la xidhiidha wakhtiga hadda ama taariikhda kale ee la bixiyay; halkan waxaa ah tusaalooyin kale oo yar:

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

Oktoobar 6 waa Axad:
Ku shaqaynta taariikhaha ee luqadda R (sifada aasaasiga ah, iyo sidoo kale baakadaha saliidda iyo wakhtiyada R)

Waxaan u baahanahay muddo, marka loo eego Oktoobar 6, qaadan doonta 3 toddobaad ee hore. Kuma darin toddobaadka ay ku jiraan Oktoobar 6 laftiisa. Sidaa darteed, tani waa muddada u dhaxaysa Sebtembar 9 ilaa Sebtembar 29.

Ku shaqaynta taariikhaha ee luqadda R (sifada aasaasiga ah, iyo sidoo kale baakadaha saliidda iyo wakhtiyada R)

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

Tusaalahan, waxaan xiisaynaynaa bishii ahayd 4 bilood ka hor, haddii aan ka bilowno Sebtember 16, 2019, markaa waxay ahayd May 2019.

Shaandhaynta tirada timirta iyadoo la isticmaalayo timeperiodsR

Si loo shaandheeyo taariikhaha gudaha timeperiodsR Waxaa jira hawlwadeeno dhowr ah:

  • %left_out% - wuxuu isbarbardhigaa laba shay oo fasalka tpr ah, wuxuuna ka soo celiyaa qiimaha bidixda ka maqan midka saxda ah.
  • %left_in% - wuxuu isbarbardhigaa laba shay oo fasalka tpr ah, wuxuuna ka soo celiyaa taariikhaha shayga bidix ee ku jira midka saxda ah.
  • %right_out% - wuxuu isbarbardhigaa laba shay oo fasalka tpr ah, wuxuuna ka soo celiyaa qiimaha midka saxda ah ee ka maqan midka bidix.
  • %right_in% - wuxuu isbarbardhigaa laba shay oo fasalka tpr ah, wuxuuna soo celiyaa taariikhaha shayga saxda ah ee ku yaal midka bidix.

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

Xaga xirmada timeperiodsR Waxaa jira mid rasmi ah, oo luqadda Ruushka ah Liiska heesaha YouTube.

gunaanad

Waxaan si faahfaahsan u baarnay qaybaha walxaha loogu talagalay luqadda R ee la shaqeynta timirta. Sidoo kale hadda waxaad samayn kartaa hawlo xisaabeed taariikho, oo aad si dhakhso ah u heli kartaa wakhti kasta adoo isticmaalaya xirmada timeperiodsR.

Haddii aad xiisaynayso luqadda R, waxaan kugu martiqaadayaa inaad ku biirto kanaalka telegram-ka R4 marketing, kaas oo aan maalin kasta la wadaago agab waxtar leh oo ku saabsan adeegsiga luqadda R si loo xalliyo dhibaatooyinkaaga maalinlaha ah.

Source: www.habr.com

Add a comment