Ke hana nei me nā lā ma R (nā mana kumu, a me nā pūʻolo lubridate a me timeperiodsR)

E kiʻi i ka lā o kēia manawa ma kekahi ʻōlelo papahana, he hana like me "Aloha honua!" ʻAʻole ʻokoʻa ka ʻōlelo R.

Ma kēia ʻatikala, e nānā mākou i ke ʻano o ka hana ʻana me nā lā i ka syntax kumu o ka ʻōlelo R, a nānā pū kekahi i nā pūʻolo pono e hoʻonui i kona hiki ke hana me nā lā:

  • lubridate - he pūʻolo e hiki ai iā ʻoe ke hana i nā helu helu ma waena o nā lā;
  • timeperiodsR - he pūʻolo no ka hana ʻana me nā manawa manawa a me kā lākou mau ʻāpana.

Ke hana nei me nā lā ma R (nā mana kumu, a me nā pūʻolo lubridate a me timeperiodsR)

Nā mea

Inā makemake ʻoe i ka ʻikepili ʻikepili, a ma ka ʻōlelo R, makemake paha ʻoe i kaʻu telegram и Ukulele nā kahawai. Hoʻolaʻa ʻia ka hapa nui o nā mea i ka ʻōlelo R.

  1. Ke hana nei me nā lā ma ka syntax R kumu
    1.1. E hoʻohuli i ka kikokikona i kēia lā
    1.2. Ka unuhi ʻana i nā ʻāpana lā ma R
  2. Ke hana nei me nā lā me ka hoʻohana ʻana i ka pūʻolo lubridate
    2.1. E hoʻololi i ka kikokikona i kēia lā me ka hoʻohana ʻana i ka lubridate
    2.2. Ka unuhi ʻana i nā ʻāpana lā me ka hoʻohana ʻana i ka pūʻolo lubridate
    2.3. Nā hana helu me nā lā
  3. Hana maʻalahi me nā manawa, pūʻolo timeperiodsR
    3.1. Manawa manawa i ka manawaR
    3.2. Ke kānana ʻana i kahi vector o nā lā me ka hoʻohana ʻana i nā manawa manawaR
  4. hopena

Ke hana nei me nā lā ma ka syntax R kumu

E hoʻohuli i ka kikokikona i kēia lā

Loaʻa i ka Basic R kahi mau hana no ka hana ʻana me nā lā. ʻO ka hemahema o ka syntax maʻamau, ʻo ia ka hihia o nā inoa hana a me nā hoʻopaʻapaʻa ua laha loa a ʻaʻohe pili pono. Eia naʻe, pono ʻoe e ʻike i nā hana kumu o ka ʻōlelo, no laila e hoʻomaka mākou me lākou.

ʻO ka manawa pinepine i ka hoʻouka ʻana i ka ʻikepili i R, mai nā faila csv, a i ʻole nā ​​kumu ʻē aʻe, loaʻa iā ʻoe kahi lā ma ke ʻano he kikokikona. No ka hoʻololi ʻana i kēia kikokikona i ke ʻano ʻikepili kūpono, e hoʻohana i ka hana 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"

ma ka paʻamau as.Date() ʻae i ka lā ma nā ʻano ʻelua: YYYY-MM-DD ai ole ia, YYYY/MM/DD.
Inā loaʻa i kāu pūʻulu ʻikepili nā lā ma kekahi ʻano ʻē aʻe, hiki iā ʻoe ke hoʻohana i ka hoʻopaʻapaʻa format.

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

waihona e ʻae i nā mea hoʻohana ma ke ʻano string e hōʻike ana i kēlā me kēia manawa a me kona ʻano; hōʻike ʻia nā waiwai maʻamau i hoʻohana ʻia ma ka papa ma lalo.

Hōʻuluʻulu
hōʻikeʻano

%d
Ka helu lā ma ka mahina

%a
He pōkole no ka inoa o ka lā o ka pule

%A
Ka inoa piha o ka lā o ka pule

%w
Ka helu o ka lā o ka pule (0-6, ʻo 0 ka Lāpule)

%m
ʻElua mau helu mahina (01-12)

%b
ʻO ka pōkole o ka inoa mahina (apr, mar,…)

%B
Inoa malama piha

%y
Koho makahiki helu elua

%Y
Koho makahiki helu ʻehā

%j
Ka helu lā o ka makahiki (001 - 366)

%U
Ka helu o ka pule o ka makahiki (00 - 53), ka hoʻomaka o ka pule Sabati

%W
Helu pule ma ka makahiki (00 - 53), ka hoomaka ana o ka pule Poakahi

No laila, ʻo "Sepatemaba 26, 2019" ka inoa piha o ka mahina, lā a me ka makahiki. Hiki ke wehewehe ʻia kēia ʻano lā me ka hoʻohana ʻana i nā mea hoʻohana penei:"%B %d, %Y".

ʻAuhea:

  • %B — Ka inoa piha o ka malama
  • %d — Ka helu o ka lā o ka mahina
  • %Y — Hoailona makahiki helu eha

I ka wehewehe ʻana i ke ʻano o ka lā, pono e hoʻokomo i nā huaʻōlelo hou aʻe mai kāu kaula, e like me nā kaha, nā koma, nā manawa, nā hakahaka, a pēlā aku. Ma kaʻu laʻana, "Sepatemaba 26, 2019", aia kahi koma ma hope o ka lā, a pono ʻoe e kau i kahi koma ma ka wehewehe ʻano:"%B %d, %Y".

Aia kekahi mau kūlana ke loaʻa iā ʻoe kahi lā ʻaʻole i kūpono wale i nā palapala maʻamau (YYYY-MM-DD a i ʻole YYYY/MM/DD), akā ma kahi ʻōlelo ʻokoʻa mai ka ʻōlelo paʻamau i kau ʻia ma kāu ʻōnaehana hana. No ka laʻana, ua hoʻoiho ʻoe i ka ʻikepili kahi i hōʻike ʻia ai ka lā penei: "December 15, 2019." Ma mua o ka hoʻololi ʻana i kēia string i kahi lā, pono ʻoe e hoʻololi i ka wahi.

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

Ka unuhi ʻana i nā ʻāpana lā ma R

ʻAʻole nui nā hana ma R kumu e ʻae iā ʻoe e unuhi i kekahi ʻāpana o ka lā mai kahi mea papa .

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

Ma waho aʻe o ka papa mea nui ma ka R kumu, aia 2 mau ʻano ʻikepili hou e mālama ai i kahi hōʻailona manawa: POSIXlt, POSIXct. ʻO ka ʻokoʻa nui ma waena o kēia mau papa a me ʻo ia ka hoʻohui i ka lā a lākou e mālama ai i ka manawa.

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

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

# "POSIXct" "POSIXt"

kuleana pili i Sys.time() hoʻihoʻi i ka lā a me ka manawa i kēia manawa ma ke ʻano POSIXct. Ua like keia ano me ka manao UNIXTIME, a mālama i ka helu o nā kekona mai ka hoʻomaka ʻana o ke au UNIX (i ke aumoe (UTC) mai Dekemaba 31, 1969 a i Ianuali 1, 1970).

Papa POSIXlt mālama pū ia i ka manawa a me ka lā, a me kā lākou mau mea āpau. No laila, he mea ia me kahi ʻano paʻakikī, akā maʻalahi ka loaʻa ʻana o kekahi ʻāpana lā a me ka manawa no ka mea i ka ʻoiaʻiʻo POSIXlt ia papa.

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

Ke hoʻololi nei i ka ʻikepili helu a me ka kikokikona i nā ʻano POSIX* hana ʻia e nā hana as.POSIXct() и as.POSIXlt(). Loaʻa i kēia mau hana kahi hoʻopaʻapaʻa liʻiliʻi.

  • x — Helu, aho a mea papa , pono e hoohuliia;
  • tz — Kahi manawa, "GMT" paʻamau;
  • format — Ka wehewehe ʻana i ke ʻano o ka lā i hoʻoili ʻia ai ka ʻikepili i ka hoʻopaʻapaʻa x;
  • kumu - Hoʻohana wale ʻia i ka hoʻololi ʻana i kahi helu i POSIX; pono ʻoe e hāʻawi i kahi mea lā a me ka manawa i helu ʻia nā kekona i kēia hoʻopaʻapaʻa. Hoʻohana maʻamau no ka unuhi ʻana mai UNIXTIME.

Inā loaʻa kāu ʻike i ka lā a me ka manawa UNIXTIME, a laila e hoʻololi iā lākou i lā maopopo a hiki ke heluhelu ʻia, e hoʻohana i kēia laʻana:

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

Ma ke kumu hiki iā ʻoe ke kuhikuhi i kēlā me kēia manawa. No ka laʻana, inā loaʻa i kāu ʻikepili ka lā a me ka manawa e like me ka helu o kekona mai ka lā 15 o Kepakemapa 2019 12:15 pm, a laila e hoʻololi iā ia i hoʻohana lā:

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

Ke hana nei me nā lā me ka hoʻohana ʻana i ka pūʻolo lubridate

lubridate Malia paha ka pūʻolo kaulana loa no ka hana ʻana me nā lā ma ka ʻōlelo R. Hāʻawi ia iā ʻoe i ʻekolu mau papa hou.

  • lōʻihi - lōʻihi, i.e. helu o nā kekona ma waena o ʻelua mau kaha manawa;
  • nā manawa - nā manawa e hiki ai iā ʻoe ke helu i waena o nā lā i nā manawa hiki ke heluhelu ʻia e ke kanaka: nā lā, nā mahina, nā pule, a pēlā aku;
  • nā kikowaena - nā mea e hāʻawi i ka hoʻomaka a me ka hopena i ka manawa.

Hoʻokomo ʻia ka hoʻokomo ʻana i nā pūʻolo hou i ka ʻōlelo R me ka hoʻohana ʻana i ka hana maʻamau install.packages().

Ke kau nei i ka pūʻolo lubridate:

install.packages("lubridate")

E hoʻololi i ka kikokikona i kēia lā me ka hoʻohana ʻana i ka lubridate

Nā hiʻohiʻona pūʻolo lubridate maʻalahi loa i ke kaʻina hana o ka hoʻololi ʻana i ka kikokikona i kahi lā, a hiki iā ʻoe ke hana i nā hana helu me nā lā a me nā manawa.

E kōkua nā hana iā ʻoe e kiʻi i ka lā a i ʻole ka lā a me ka manawa today() и now().

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

E hoʻololi i kahi kaula i kahi lā ma lubridate Aia kahi ʻohana holoʻokoʻa o nā hana nona nā inoa i ʻekolu mau leka, a hōʻike i ke kaʻina o nā mea lā:

  • y - makahiki
  • m - mahina
  • d - lā

Ka papa inoa o nā hana no ka hoʻololi ʻana i ka kikokikona i kēia lā ma o ka lubridate

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

ʻO kekahi mau laʻana no ka hoʻololi ʻana i nā kaula i nā lā:

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

E like me kāu e ʻike ai lubridate ʻOi aku ka maikaʻi o ka ʻike ʻana i ka wehewehe ʻana i ka lā ma ke ʻano he kikokikona, a hiki iā ʻoe ke hoʻololi i ka kikokikona i kēia lā me ka ʻole o ka hoʻohana ʻana i nā mea hoʻohana hou e wehewehe i ke ʻano.

Ka unuhi ʻana i nā ʻāpana lā me ka hoʻohana ʻana i ka pūʻolo lubridate

Hoʻohana pū lubridate hiki iā ʻoe ke loaʻa kekahi ʻāpana mai kahi lā:

dt <- ymd("2017 jan 21")

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

Nā hana helu me nā lā

Akā ʻo ka mea nui a me ka hana kumu lubridate ʻo ia ka hiki ke hana i nā hana helu like ʻole me nā lā.

Hana ʻia ka pōʻai lā e ʻekolu mau hana:

  • floor_date - hoʻopuni ana i ka manawa i hala kokoke loa
  • ceiling_date - hoʻopuni ana i ka wā e hiki mai ana
  • round_date - hoʻopuni ana i ka manawa kokoke loa

He hoʻopaʻapaʻa ko kēlā me kēia hana Ho'okahihiki iā ʻoe ke kuhikuhi i ka ʻāpana pōʻai: ʻelua, minuke, hola, lā, pule, mahina, ʻelua mahina, hapaha, kau, hapalua makahiki, makahiki.

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

No laila e noʻonoʻo kākou pehea e loaʻa ai kahi lā he 8 mau lā ma hope o ka lā o kēia manawa a hana i nā helu helu helu ʻē aʻe ma waena o nā lā ʻelua.

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

Hana maʻalahi me nā manawa, pūʻolo timeperiodsR.

timeperiodsR - he pūʻolo hou no ka hana ʻana me nā lā i paʻi ʻia ma CRAN i Kepakemapa 2019.

Ke kau nei i ka pūʻolo timeperiodsR:

install.packages("timeperiodsR")

ʻO ke kumu nui, ʻo ia ka hoʻoholo wikiwiki ʻana i kekahi manawa e pili ana i ka lā i hāʻawi ʻia. No ka laʻana, me ka hoʻohana ʻana i kāna mau hana hiki iā ʻoe ke maʻalahi:

  • E kiʻi i ka pule, mahina, hapahā a i ʻole makahiki i hala ma R.
  • E kiʻi i ka helu o nā manawa kikoʻī e pili ana i kahi lā, no ka laʻana i nā pule 4 i hala.
  • He mea maʻalahi ka unuhi ʻana i kāna mau ʻāpana mai ka hopena o ka manawa: ka lā hoʻomaka a me ka lā hopena, ka helu o nā lā i hoʻokomo ʻia i loko o ke kaʻina, ke kaʻina holoʻokoʻa o nā lā i hoʻokomo ʻia i loko.

Ka inoa o nā hana pūʻolo a pau timeperiodsR he intuitive a he ʻelua ʻāpana: alakaʻi_waena, ma hea:

  • alakaʻi kahi e pono ai ʻoe e neʻe e pili ana i kahi lā i hāʻawi ʻia: last_n, previous, this, next, next_n.
  • kaʻao waena e helu i ka manawa: lā, pule, mahina, hapaha, makahiki.

Nā hana piha:

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

Manawa manawa i ka manawaR

Pono kēia mau hana i nā hihia kahi e pono ai ʻoe e kūkulu i nā hōʻike e pili ana i ka ʻikepili mai ka pule a i ʻole ka mahina i hala. No ka loaʻa ʻana o ka mahina i hala, e hoʻohana i ka hana o ka inoa like previous_month():

prmonth <- previous_month()

Ma hope e loaʻa iā ʻoe kahi mea prmonth keka tpr, kahi e hiki ai ke loaʻa maʻalahi nā mea i lalo:

  • ka lā hoʻomaka o ka manawa, i kā mākou laʻana ʻo kēia ka mahina hope loa
  • lā hopena manawa
  • helu o nā lā i komo i loko o ka manawa
  • ke kaʻina o nā lā i komo i ka wā

Eia kekahi, hiki iā ʻoe ke loaʻa i kēlā me kēia ʻāpana i nā ʻano like ʻole:

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

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

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

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

Hiki iā ʻoe ke loaʻa i kekahi o nā ʻāpana me ka hoʻohana ʻana i ka hoʻopaʻapaʻa hapa, aia i loko o kēlā me kēia pūʻolo hana. Nā waiwai kūpono: hoʻomaka, hoʻopau, kaʻina, lōʻihi.

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

No laila, e nānā kākou i nā manaʻo hoʻopaʻapaʻa a pau i loaʻa i loko o nā hana pūʻolo timeperiodsR:

  • x - ʻO ka lā kuhikuhi kahi e helu ʻia ai ka manawa, ka lā o kēia manawa ma ke ʻano maʻamau;
  • n - Ka helu o nā manawa e hoʻokomo ʻia i loko o ka manawa, no ka laʻana o nā pule 3 i hala;
  • part — Owai ka mahele o ka mea tpr pono ʻoe e kiʻi, ma ka paʻamau all;
  • week_start — Aia wale ka paio ma na hana no ka hana ana me na pule, a hiki ia oe ke hoonoho i ka helu o ka la o ka pule e manaoia ai kona hoomaka ana. 1 - Poakahi a 7 - Sabati.

No laila, hiki iā ʻoe ke helu i kēlā me kēia manawa e pili ana i kēia manawa a i ʻole kekahi lā i hāʻawi ʻia; eia kekahi mau laʻana:

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

ʻO ʻOkakopa 6 ʻo ia ka Lāpule:
Ke hana nei me nā lā ma R (nā mana kumu, a me nā pūʻolo lubridate a me timeperiodsR)

Pono mākou i kahi manawa, e pili ana i ʻOkakopa 6, e lawe i nā pule 3 i hala. ʻAʻole i hoʻokomo i ka pule e komo pū ana ʻo ʻOkakopa 6 ponoʻī. No laila, ʻo kēia ka manawa mai Kepakemapa 9 a i Kepakemapa 29.

Ke hana nei me nā lā ma R (nā mana kumu, a me nā pūʻolo lubridate a me 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

Ma kēia hiʻohiʻona, makemake mākou i ka mahina ʻo 4 mau mahina i hala aku nei, inā mākou e hoʻomaka mai Kepakemapa 16, 2019, a laila ʻo Mei 2019.

Ke kānana ʻana i kahi vector o nā lā me ka hoʻohana ʻana i nā manawa manawaR

E kānana i nā lā ma timeperiodsR Aia kekahi mau mea hana:

  • % left_out% - hoʻohālikelike i ʻelua mau mea papa tpr, a hoʻihoʻi i ka waiwai mai ka ʻaoʻao hema i nalowale i ka mea ʻākau.
  • % left_in% - hoʻohālikelike i ʻelua mea o ka papa tpr, a hoʻihoʻi i nā lā mai ka mea hema i hoʻokomo ʻia i ka mea ʻākau.
  • %right_out% - hoʻohālikelike i ʻelua mau mea papa tpr, a hoʻihoʻi i ka waiwai mai ka mea ʻākau i nalowale mai ka hema.
  • %right_in% - hoʻohālikelike i ʻelua mau mea o ka papa tpr, a hoʻihoʻi i nā lā mai ka mea ʻākau aia ma ka ʻaoʻao hema.

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

Ma ka pūʻolo timeperiodsR aia kekahi luna, ʻōlelo Lūkini YouTube playlist.

hopena

Ua nānā pono mākou i nā papa o nā mea i hoʻolālā ʻia ma ka ʻōlelo R no ka hana ʻana me nā lā. I kēia manawa hiki iā ʻoe ke hana i nā hana arithmetic i nā lā, a loaʻa koke i nā manawa me ka hoʻohana ʻana i ka pūʻolo timeperiodsR.

Inā makemake ʻoe i ka ʻōlelo R, ke kono aku nei au iā ʻoe e kau inoa i kaʻu channel telegram R4marketing, kahi aʻu e kaʻana like ai i nā mea pono i kēlā me kēia lā e pili ana i ka hoʻohana ʻana i ka ʻōlelo R i ka hoʻoponopono ʻana i kāu mau pilikia i kēlā me kēia lā.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka