ProHoster > Блог > Maamulka > Ku shaqaynta taariikhaha ee luqadda R (sifada aasaasiga ah, iyo sidoo kale baakadaha saliidda iyo wakhtiyada R)
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.
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.
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)
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;
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.
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:
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.
# получить месяц отстающий на 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
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.