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.
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.
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 lā.
current_date <- Sys.Date() # текущая дата
weekdays(current_date) # получить номер дня недели
months(current_date) # получить номер месяца в году
quarters(current_date) # получить номер квартала в году
Ma waho aʻe o ka papa mea nui lā 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 lā ʻ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 lā, 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:
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.
# получить месяц отстающий на 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ā.