Kugwira ntchito ndi masiku mu R (maluso oyambira, komanso phukusi lamafuta ndi timeperiodsR)

Pezani tsiku lapano m'chinenero chilichonse chokonzekera, ntchito yofanana ndi "Moni dziko!" Chilankhulo cha R sichimodzimodzi.

M'nkhaniyi, tiwona momwe kugwira ntchito ndi madeti kumagwirira ntchito m'mawu oyambira a chilankhulo cha R, ndikuwonanso mapaketi angapo othandiza omwe amakulitsa luso lake pogwira ntchito ndi madeti:

  • lubridate - phukusi lomwe limakupatsani mwayi wowerengera masamu pakati pa masiku;
  • timeperiodsR - phukusi la ntchito ndi nthawi intervals ndi zigawo zake.

Kugwira ntchito ndi masiku mu R (maluso oyambira, komanso phukusi lamafuta ndi timeperiodsR)

Zamkatimu

Ngati mukufuna kusanthula deta, makamaka chilankhulo cha R, mungakonde kudziwa zanga uthengawo и Youtube njira. Zambiri mwazomwe zimaperekedwa ku chilankhulo cha R.

  1. Kugwira ntchito ndi masiku mu syntax yoyambira R
    1.1. Sinthani mawu kukhala tsiku
    1.2. Kuchotsa zigawo za tsiku mu Basic R
  2. Kugwira ntchito ndi masiku pogwiritsa ntchito phukusi la lubridate
    2.1. Sinthani mawu kukhala tsiku pogwiritsa ntchito lubridate
    2.2. Kuchotsa zigawo za tsiku pogwiritsa ntchito phukusi la lubridate
    2.3. Ntchito za masamu okhala ndi masiku
  3. Ntchito yosavuta yokhala ndi nthawi, phukusi la timeperiodsR
    3.1. Mipata ya nthawi mu timeperiodsR
    3.2. Kusefa vekitala ya masiku pogwiritsa ntchito timeperiodsR
  4. Pomaliza

Kugwira ntchito ndi masiku mu syntax yoyambira R

Sinthani mawu kukhala tsiku

Basic R ili ndi ntchito zogwirira ntchito ndi madeti. Choyipa cha mawu oyambira ndikuti nkhani ya mayina antchito ndi mikangano ndiyomwazika kwambiri ndipo ilibe kulumikizana koyenera. Komabe, muyenera kudziwa ntchito zoyambira za chilankhulo, ndiye tiyambira nazo.

Nthawi zambiri mukatsitsa deta mu R, kuchokera kumafayilo a csv, kapena malo ena, mumalandira tsiku ngati mawu. Kuti musinthe mawuwa kukhala mtundu wolondola wa data, gwiritsani ntchito ntchitoyi 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"

zotsatira as.Date() amavomereza tsiku m'njira ziwiri: YYYY-MM-DD kapena YYYY/MM/DD.
Ngati deta yanu ili ndi masiku amtundu wina, mutha kugwiritsa ntchito mkangano format.

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

mtundu amavomereza ogwiritsira ntchito mumtundu wa zingwe zosonyeza nthawi iliyonse ndi maonekedwe ake; zomwe zimagwiritsidwa ntchito kwambiri zikuwonetsedwa patebulo ili pansipa:

mtundu
mafotokozedwe

%d
Nambala ya tsiku pamwezi

%a
Chidule cha dzina la tsiku la sabata

%A
Dzina lonse la tsiku la sabata

%w
Nambala ya tsiku la sabata (0-6, pomwe 0 ndi Lamlungu)

%m
Kutchulidwa kwa miyezi iwiri (01-12)

%b
Chidule cha dzina la mwezi (pr, mar, ...)

%B
Dzina la mwezi wonse

%y
Chiwerengero chazaka ziwiri

%Y
Chiwerengero chazaka zinayi

%j
Nambala ya tsiku mchaka (001 - 366)

%U
Chiwerengero cha sabata m'chaka (00 - 53), kuyambira sabata Lamlungu

%W
Nambala ya sabata m'chaka (00 - 53), kuyambira sabata Lolemba

Chifukwa chake, "Seputembala 26, 2019" ndiye dzina lonse la mwezi, tsiku ndi chaka. Mawonekedwe a deti atha kufotokozedwa pogwiritsa ntchito ma opareta motere:"%B %d, %Y".

Kumeneko:

  • %B - Dzina lonse la mwezi
  • %d - Chiwerengero cha tsiku m'mwezi
  • %Y - Chiwerengero chazaka zinayi

Pofotokoza mtundu wa deti, ndikofunikira kuti muphatikize zilembo zonse zowonjezera kuchokera ku chingwe chanu, monga mitsinje, koma, nthawi, mipata, ndi zina zotero. Muchitsanzo changa, "Seputembara 26, 2019", pali comma pambuyo pa tsikulo, ndipo muyeneranso kuyika chikomokere mofotokozera:"%B %d, %Y".

Pali zochitika mukalandira tsiku lomwe silikugwirizana ndi mawonekedwe wamba (YYYY-MM-DD kapena YYYY/MM/DD), komanso m'chinenero chomwe chimasiyana ndi chomwe chimayikidwa pa makina anu opangira opaleshoni. Mwachitsanzo, mudadawuniloda data pomwe deti likuwonetsedwa motere: "December 15, 2019." Musanasinthe chingwechi kukhala deti, muyenera kusintha malo.

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

Kuchotsa zigawo za tsiku mu Basic R

Palibe ntchito zambiri mu R zomwe zimakulolani kuchotsa gawo lililonse la deti ku chinthu chakalasi Date.

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

Kuwonjezera pa chinthu chachikulu kalasi Date mu basic R pali mitundu iwiri ya data yomwe imasunga sitampu: POSIXlt, POSIXct. Kusiyana kwakukulu pakati pa makalasi awa ndi Date ndikuti kuwonjezera pa tsiku lomwe amasunga nthawi.

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

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

# "POSIXct" "POSIXt"

ntchito Sys.time() imabweretsanso tsiku ndi nthawi yomwe ilipo mumpangidwe POSIXct. Mtundu uwu ndi wofanana ndi tanthauzo KUSINTHA, ndikusunga kuchuluka kwa masekondi kuyambira chiyambi cha nthawi ya UNIX (pakati pausiku (UTC) kuyambira pa Disembala 31, 1969 mpaka Januware 1, 1970).

Kalasi POSIXlt imasunganso nthawi ndi tsiku, ndi zigawo zake zonse. Chifukwa chake, ndi chinthu chokhala ndi mawonekedwe ovuta kwambiri, koma komwe kumakhala kosavuta kupeza tsiku lililonse ndi gawo la nthawi chifukwa Pamenepo POSIXlt izo mndandanda.

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

Kutembenuza manambala ndi malemba kukhala mawonekedwe POSIX* zoyendetsedwa ndi ntchito as.POSIXct() и as.POSIXlt(). Ntchitozi zimakhala ndi zotsutsana zazing'ono.

  • x - Nambala, chingwe kapena kalasi chinthu Date, zomwe ziyenera kutembenuzidwa;
  • tz - Nthawi zone, kusakhulupirika "GMT";
  • mtundu - Kufotokozera za mtundu wa tsiku lomwe deta idaperekedwa ku mtsutso wa x imayimiridwa;
  • chiyambi - Amagwiritsidwa ntchito posintha nambala kukhala POSIX; muyenera kudutsa tsiku ndi nthawi yomwe masekondi amawerengedwa mpaka mkanganowu. Amagwiritsidwa ntchito pomasulira kuchokera ku UNIXTIME.

Ngati chidziwitso chanu cha tsiku ndi nthawi chili mkati KUSINTHA, kenako kuti muwasinthe kukhala deti lomveka bwino, lowerengeka, gwiritsani ntchito chitsanzo chotsatirachi:

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

Poyambira mutha kutchula sitampu iliyonse. Mwachitsanzo, ngati data yanu ili ndi tsiku ndi nthawi monga kuchuluka kwa masekondi kuyambira pa Seputembara 15, 2019 12:15 pm, ndiye kuti musinthe kukhala deti:

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

Kugwira ntchito ndi masiku pogwiritsa ntchito phukusi la lubridate

lubridate Mwina phukusi wotchuka kwambiri ntchito ndi madeti mu chinenero R. Imakupatsirani makalasi atatu owonjezera.

  • durations - nthawi, i.e. chiwerengero cha masekondi pakati pa nthawi ziwiri;
  • nyengo - nthawi zimakupatsani mwayi wowerengera pakati pa masiku omwe angawerengedwe ndi anthu: masiku, miyezi, masabata, ndi zina zotero;
  • intervals - zinthu zomwe zimapereka poyambira ndi pothera nthawi.

Kuyika kwa mapaketi owonjezera mu chilankhulo cha R kumachitika pogwiritsa ntchito ntchito yokhazikika install.packages().

Kuyika phukusi lubridate:

install.packages("lubridate")

Sinthani mawu kukhala tsiku pogwiritsa ntchito lubridate

Zomwe phukusi lubridate imathandizira kwambiri njira yosinthira mawu kukhala deti, ndikukulolani kuti muchite masamu aliwonse okhala ndi masiku ndi nthawi.

Ntchitozi zidzakuthandizani kupeza tsiku kapena tsiku ndi nthawi today() и now().

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

Kuti musinthe chingwe kukhala deti lubridate Pali banja lonse la ntchito zomwe maina awo nthawi zonse amakhala ndi zilembo zitatu, ndipo amasonyeza ndondomeko ya zigawo za tsiku:

  • y - chaka
  • m -mwezi
  • d -tsiku

Mndandanda wa ntchito zosinthira zolemba kukhala tsiku kudzera pa lubridate

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

Zitsanzo zina zosinthira zingwe kukhala madeti:

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

Monga mukuwonera lubridate Ndiwothandiza kwambiri pakuzindikira mafotokozedwe amasiku ngati mawu, ndipo amakulolani kuti musinthe mawu kukhala tsiku osagwiritsa ntchito owonjezera kuti mufotokoze mawonekedwewo.

Kuchotsa zigawo za tsiku pogwiritsa ntchito phukusi la lubridate

Komanso kugwiritsa ntchito lubridate mutha kupeza chigawo chilichonse kuyambira tsiku:

dt <- ymd("2017 jan 21")

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

Ntchito za masamu okhala ndi masiku

Koma zofunika kwambiri ndi zofunika magwiridwe lubridate ndi kuthekera kochita masamu osiyanasiyana okhala ndi masiku.

Kuzungulira tsiku kumachitidwa ndi ntchito zitatu:

  • floor_date - kuzungulira ku nthawi yapafupi yapitayo
  • ceiling_date - kuzungulira ku nthawi yamtsogolo
  • round_date - kuzungulira mpaka nthawi yapafupi

Iliyonse mwa ntchitozi ili ndi mkangano Unitzomwe zimakulolani kuti mutchule gawo lozungulira: chachiwiri, mphindi, ola, tsiku, sabata, mwezi, mwezi, kotala, nyengo, theka la chaka, chaka

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

Chifukwa chake tiyeni tiwone momwe tingapezere deti lomwe ndi masiku 8 kuchokera tsiku lomwe lilipo ndikuchita masamu ena osiyanasiyana pakati pa madeti awiriwo.

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

Ntchito yosavuta yokhala ndi nthawi, phukusi la timeperiodsR.

timeperiodsR - phukusi latsopano logwira ntchito ndi masiku omwe adasindikizidwa pa CRAN mu Seputembara 2019.

Kuyika phukusi timeperiodsR:

install.packages("timeperiodsR")

Cholinga chachikulu ndikuzindikira mwachangu nthawi inayake yokhudzana ndi tsiku lomwe laperekedwa. Mwachitsanzo, pogwiritsa ntchito ntchito zake mungathe:

  • Pezani sabata yapitayi, mwezi, kotala kapena chaka mu R.
  • Pezani nambala yodziwika ya nthawi zokhudzana ndi tsiku, mwachitsanzo masabata 4 apitawa.
  • N'zosavuta kuchotsa zigawo zake kuchokera ku nthawi yotsatila: tsiku loyamba ndi lomaliza, chiwerengero cha masiku omwe akuphatikizidwa mu nthawiyi, ndondomeko yonse ya masiku omwe akuphatikizidwamo.

Dzina lazochita zonse za phukusi timeperiodsR ndi zachidziwitso ndipo zili ndi magawo awiri: njira_nthawi,ku:

  • njira momwe muyenera kusuntha wachibale ndi tsiku lomwe mwapatsidwa: last_n, yapita, iyi, yotsatira, yotsatira_n.
  • kwakanthawi nthawi kuwerengera nthawi: tsiku, sabata, mwezi, kotala, chaka.

Ntchito zonse:

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

Mipata ya nthawi mu timeperiodsR

Izi ndizothandiza ngati mukufuna kupanga malipoti potengera zomwe zachitika sabata kapena mwezi watha. Kuti mupeze mwezi watha, gwiritsani ntchito dzina lomwelo previous_month():

prmonth <- previous_month()

Pambuyo pake mudzakhala ndi chinthu mwezi kalasi tpr, komwe zigawo zotsatirazi zitha kupezeka mosavuta:

  • tsiku loyamba la nthawi, mu chitsanzo chathu uwu ndi mwezi wotsiriza
  • tsiku lomaliza
  • chiwerengero cha masiku ophatikizidwa mu nthawiyo
  • kutsatizana kwa masiku omwe akuphatikizidwa mu nthawiyo

Komanso, mutha kupeza chilichonse mwazinthuzo m'njira zosiyanasiyana:

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

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

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

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

Mukhozanso kupeza chilichonse mwa zigawo pogwiritsa ntchito mkangano mbali, yomwe ilipo muzonse za phukusi. Zikhalidwe zomwe zingatheke: chiyambi, mapeto, ndondomeko, kutalika.

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

Ndiye tiyeni tiwone mikangano yonse yomwe ilipo muzochita za phukusi timeperiodsR:

  • x - Tsiku lofotokozera lomwe nthawiyo idzawerengedwera, tsiku lomwe lilipo mwachisawawa;
  • n - Chiwerengero cha nthawi zomwe zidzaphatikizidwe mu nthawiyi, mwachitsanzo masabata a 3 apitawo;
  • part - Chigawo chiti cha chinthucho tpr muyenera kupeza, mwachisawawa all;
  • week_start - Mkangano umapezeka muzochita zogwirira ntchito ndi masabata, ndikukulolani kuti muyike nambala ya tsiku la sabata yomwe idzaonedwe ngati chiyambi chake. 1 - Lolemba mpaka 7 - Lamlungu.

Chifukwa chake, mutha kuwerengera nthawi iliyonse yokhudzana ndi masiku ano kapena tsiku lina lililonse; Nazi zitsanzo zina zingapo:

# получить 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 ndi Lamlungu:
Kugwira ntchito ndi masiku mu R (maluso oyambira, komanso phukusi lamafuta ndi timeperiodsR)

Tikufuna nthawi yomwe, poyerekeza ndi Okutobala 6, itenga masabata atatu apitawa. Osaphatikizanso sabata lomwe limaphatikizapo October 3 palokha. Chifukwa chake, iyi ndi nthawi yoyambira Seputembara 6 mpaka Seputembara 9.

Kugwira ntchito ndi masiku mu R (maluso oyambira, komanso phukusi lamafuta ndi 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

Mu chitsanzo ichi, tili ndi chidwi ndi mwezi womwe unali miyezi 4 yapitayo, ngati tiyamba pa Seputembara 16, 2019, ndiye kuti inali Meyi 2019.

Kusefa vekitala ya masiku pogwiritsa ntchito timeperiodsR

Kusefa masiku mkati timeperiodsR Pali othandizira angapo:

  • % left_out% - amafanizira zinthu ziwiri za tpr class, ndikubwezeretsa mtengo kuchokera kumanzere komwe kulibe kumanja.
  • %left_in% - kufananiza zinthu ziwiri za tpr class, ndikubwezeretsa madeti kuchokera ku chinthu chakumanzere chomwe chikuphatikizidwa kumanja.
  • %right_out% - amafanizira zinthu ziwiri za tpr class, ndikubwezeretsanso mtengo kuchokera kumanja womwe ukusowa kuchokera kumanzere.
  • %right_in% - amafananiza zinthu ziwiri za tpr class, ndikubwezeretsa madeti kuchokera ku chinthu choyenera chomwe chili kumanzere.

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 paketi timeperiodsR pali boma, la chinenero cha Chirasha YouTube playlist.

Pomaliza

Tidasanthula mwatsatanetsatane makalasi azinthu zomwe zidapangidwa muchilankhulo cha R kuti zizigwira ntchito ndi masiku. Komanso tsopano mutha kuchita masamu pamasiku, ndikupeza mwachangu nthawi iliyonse pogwiritsa ntchito phukusi timeperiodsR.

Ngati mukufuna chilankhulo cha R, ndikukupemphani kuti mulembetse ku njira yanga ya telegalamu R4 malonda, momwe ndimagawana zinthu zothandiza tsiku ndi tsiku za kugwiritsa ntchito chilankhulo cha R pothetsa mavuto anu a tsiku ndi tsiku.

Source: www.habr.com

Kuwonjezera ndemanga