ProHoster > Блог > Whakahaerenga > Te mahi me nga ra i roto i te R (nga kaha taketake, me nga kohinga whakahinuhinu me nga wa-waR)
Te mahi me nga ra i roto i te R (nga kaha taketake, me nga kohinga whakahinuhinu me nga wa-waR)
Tikina te ra o naianei i roto i tetahi reo hootaka, he mahi e rite ana ki te "Kia ora te ao!" Ko te reo R ehara i te mea rereke.
I roto i tenei tuhinga, ka titiro tatou me pehea te mahi me nga ra e mahi ana i roto i te wetereo taketake o te reo R, me te titiro ano hoki ki etahi kohinga whaihua hei whakawhānui ake i ona kaha i te wa e mahi ana me nga ra:
lubridate — he kete ka taea e koe te mahi tatau tatau i waenga i nga ra;
timeperiodsR - he kete mo te mahi me nga waahi wa me o raatau waahanga.
Tuhinga
Mena kei te pirangi koe ki te wetewete raraunga, otira ko te reo R, kei te pirangi koe ki taku waea и youtube hongere. Ko te nuinga o nga korero e whakatapua ana ki te reo R.
He huinga mahi a Basic R mo te mahi me nga ra. Ko te kino o te wetereo taketake ko te take o nga ingoa mahi me nga tohenga he tino marara noa, kaore he hononga arorau. Heoi, me mohio koe ki nga mahi taketake o te reo, no reira ka timata tatou ki aua mahi.
I te nuinga o nga wa ka utaina nga raraunga ki R, mai i nga konae csv, etahi atu puna ranei, ka whiwhi koe i te ra hei tuhinga. Hei huri i tenei kuputuhi ki te momo raraunga tika, whakamahia te mahi 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"
i te taunoa as.Date() e whakaae ana ki te ra i roto i nga whakatakotoranga e rua: YYYY-MM-DD ranei YYYY/MM/DD.
Mena kei roto i to huinga raraunga nga ra kei etahi atu whakatakotoranga, ka taea e koe te whakamahi i te tautohe format.
as.Date("September 26, 2019", format = "%B %d, %Y")
hōputu ka whakaae ki nga kaiwhakahaere i roto i te ahua aho e tohu ana i te waa me tona whakatakotoranga; ko nga uara e whakamahia nuitia ana ka whakaatuhia ki te ripanga i raro nei:
Hōputu
Whakaahuatanga
%d
Te tau o te ra i te marama
%a
Whakapoto mo te ingoa o te ra o te wiki
%A
Ingoa katoa o te ra o te wiki
%w
Te maha o te ra o te wiki (0-6, ko te 0 te Rātapu)
%m
Tohunga marama-rua (01-12)
%b
Whakapototanga o te ingoa marama (aperira, mae,…)
%B
Ingoa marama tonu
%y
Tohunga tau e rua mati
%Y
Tohunga tau e wha mati
%j
Tau rā i te tau (001 - 366)
%U
Te maha o te wiki o te tau (00 - 53), te timatanga o te wiki o te Ratapu
%W
Te nama wiki i te tau (00 - 53), te timatanga o te wiki Mane
No reira, “Mahuru 26, 2019” te ingoa katoa o te marama, te ra me te tau. Ka taea te whakaahua i tenei whakatakotoranga ra ma te whakamahi i nga kaiwhakahaere penei:"%B %d, %Y".
Kei hea:
%B — Ingoa katoa o te marama
%d — Te maha o te ra o te marama
%Y — Tohunga tau e wha mati
I te wa e whakaahua ana i te whakatakotoranga ra, he mea nui ki te whakauru i nga taapiri katoa mai i to aho, penei i nga tohu, tohu, waahi, mokowā, me etahi atu. I roto i taku tauira, "Mahuru 26, 2019", he piko i muri i te ra, a me whakauru ano he piko ki te whakaahuatanga whakatakotoranga:"%B %d, %Y".
He waahi ka whiwhi koe i te ra kaore i te rite ki nga whakatakotoranga paerewa (YYYY-MM-DD, YYYY/MM/DD), engari ano hoki i roto i te reo rereke mai i te taunoa kua whakauruhia ki to punaha whakahaere. Hei tauira, i tikiakehia e koe nga raraunga e tohuhia ana te ra penei: "Tihema 15, 2019." I mua i te huri i tenei aho ki te ra, me huri koe i te waahi.
# Меняем локаль
Sys.setlocale("LC_TIME", "Russian")
# Конвертируем строку в дату
as.Date("Декабрь 15, 2019 г.", format = "%B %d, %Y")
Te tango i nga waahanga ra i roto i te R taketake
Kaore he maha o nga mahi i roto i te R taketake ka taea e koe te tango i tetahi waahanga o te ra mai i tetahi ahanoa akomanga Te rā.
current_date <- Sys.Date() # текущая дата
weekdays(current_date) # получить номер дня недели
months(current_date) # получить номер месяца в году
quarters(current_date) # получить номер квартала в году
I tua atu i te akomanga ahanoa matua Te rā i roto i te R taketake e 2 atu ano nga momo raraunga e pupuri ana i te tohu waahi: POSIXlt, POSIXct. Ko te rereketanga nui i waenga i enei akomanga me Te rā ko tera i tua atu i te ra e rongoa ai ratou i te wa.
# получить текущую дату и время
current_time <- Sys.time()
# узнать класс объекта current_time
class(current_time)
# "POSIXct" "POSIXt"
mahi Sys.time() ka whakahoki i te ra me te wa o naianei ki te whakatakotoranga POSIXct. He rite te tikanga o tenei whakatakotoranga ki WANANGA, me te penapena i te maha o nga hēkona mai i te timatanga o te wa UNIX (i waenganui po (UTC) mai i te Hakihea 31, 1969 ki Hanuere 1, 1970).
Класс POSIXlt kei te rongoa hoki i te wa me te ra, me o raatau waahanga katoa. Na reira, he ahanoa me te hanganga uaua ake, engari mai i te mea he ngawari ki te tiki i tetahi waahanga ra me te wa na te mea i roto i te meka POSIXlt reira rārangi.
# Получаем текущую дату и время
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 # часовой пояс
Te huri i nga raraunga tau me nga raraunga kuputuhi ki nga whakatakotoranga POSIX* ka mahia e nga mahi as.POSIXct() и as.POSIXlt(). He huinga tohenga iti enei mahi.
x — Tau, aho, ahanoa akomanga ranei Te rā, e tika ana kia tahuri;
tz — Rohe wa, taunoa "GMT";
hōputu — Whakaahuatanga o te whakatakotoranga ra i tukuna ai nga raraunga ki te tohenga x;
takenga — Ka whakamahia anake ina huri i te tau ki te POSIX; me tuku he ahanoa ra me te wa e tatau ai nga hēkona ki tenei tautohe. Ka whakamahia mo te whakamaoritanga mai i UNIXTIME.
Mena kei roto to korero mo te ra me te wa WANANGA, ka huri hei ra marama, ka taea te panui, whakamahia te tauira e whai ake nei:
# Конвертируем UNIXTIME в читаемую дату
as.POSIXlt(1570084639, origin = "1970-01-01")
I te takenga ka taea e koe te tohu tohu wa. Hei tauira, mena kei roto i to raraunga te ra me te wa ko te maha o nga hēkona mai i te Mahuru 15, 2019 12:15 pm, katahi ka huri hei whakamahi ra:
# Конвертируем UNIXTIME в дату учитывая что начало отсчёта 15 сентября 2019 12:15
as.POSIXlt(1546123, origin = "2019-09-15 12:15:00")
Te mahi me nga ra ma te whakamahi i te kete whakahinuhinu
lubridate Ko te kete tino rongonui mo te mahi me nga ra i roto i te reo R. Ka whakawhiwhia koe ki etahi atu akomanga e toru.
roanga — roanga, i.e. te maha o nga hēkona i waenga i nga tohu wa e rua;
wā - wā ka taea e koe te tātai i waenga i ngā rā i roto i ngā wā ka taea e te tangata te pānui: rā, marama, wiki, aha atu;
wā - nga mea e whakarato ana i te timatanga me te mutunga o te waa.
Ko te whakaurunga o nga kohinga taapiri i te reo R ka mahia ma te whakamahi i te mahi paerewa install.packages().
Te tāuta i te mōkihi lubridate:
install.packages("lubridate")
Hurihia te kuputuhi ki tenei ra ma te whakahinuhinu
Ngā āhuatanga mōkihi lubridate tino whakangwarihia te mahi huri i te tuhinga ki te ra, ka taea hoki e koe te whakahaere i nga mahi tatau me nga ra me nga waa.
Ma nga mahi ka awhina koe ki te tiki i te ra o naianei, te ra ranei me te wa today() и now().
today() # текущая дата
now() # текущая дата и время
Hei huri i te aho ki te ra i roto lubridate He whanau katoa nga mahi e toru nga reta o ona ingoa, me te whakaatu i te raupapa o nga waahanga ra:
y - tau
m - marama
d - ra
Rarangi o nga mahi hei huri i te kuputuhi ki te ra ma te whakahinuhinu
ymd()
ydm()
mdy()
myd()
dmy()
dym()
yq()
Ko etahi tauira mo te huri i nga aho ki nga ra:
ymd("2017 jan 21")
mdy("March 20th, 2019")
dmy("1st april of 2018")
Ka kite koe lubridate He pai ake te mohio ki nga whakaahuatanga ra hei tuhinga, ka taea e koe te huri i nga tuhinga ki tenei ra me te kore whakamahi i etahi atu kaiwhakahaere hei whakaahua i te whakatakotoranga.
Te tango i nga waahanga ra ma te whakamahi i te kete whakahinuhinu
Te whakamahi hoki lubridate ka taea e koe te tiki i tetahi waahanga mai i te ra:
dt <- ymd("2017 jan 21")
year(dt) # год
month(dt) # месяц
mday(dt) # день в месяце
yday(dt) # день в году
wday(dt) # день недели
Nga mahi tatau me nga ra
Engari ko te mahi tino nui me te taketake lubridate ko te kaha ki te mahi i nga momo mahi tatau me nga ra.
Ko te whakaawhiwhi o te ra ka mahia e nga mahi e toru:
floor_date — whakaawhiwhi ki te wa o mua tata
ceiling_date — whakaawhiwhi ki te wa e heke mai nei
round_date - whakaawhiwhi ki te wa tata
He tohenga to ia o enei mahi kōwaeka taea e koe te tautuhi i te wae porowhita: tuarua, meneti, haora, ra, wiki, marama, rua marama, hauwhā, wa, haurua tau, tau
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") # округлить до полугодия
Na me whakaaro me pehea te tiki ra e 8 nga ra i muri mai i te ra o naianei me te mahi i etahi atu tatauranga tatau i waenga i nga ra e rua.
today() + days(8) # какая дата будет через 8 дней
today() - months(2) # какая дата была 2 месяца назад
today() + weeks(12) # какая дата будет через 12 недель
today() - years(2) # какая дата была 2 года назад
Nga mahi ngawari me nga wa, te kete timeperiodsR.
timeperiodsR — he kete hou mo te mahi me nga ra i whakaputaina i runga CRAN i te Mahuru 2019.
Te tāuta i te mōkihi timeperiodsR:
install.packages("timeperiodsR")
Ko te kaupapa matua kia tere te whakatau i tetahi waahi wa e pa ana ki tetahi ra. Hei tauira, ma te whakamahi i ana mahi ka taea e koe te ngawari:
Tikina te wiki, marama, hauwhā, tau ranei kua hipa i roto i te R.
Tikina te maha o nga waahi wa e pa ana ki tetahi ra, hei tauira mo nga wiki e 4 kua hipa.
He ngawari ki te tango i ona waahanga mai i te waahi o te waa: te tiimata me te ra mutunga, te maha o nga ra kua whakauruhia ki roto i te waahi, te raupapa katoa o nga ra kua whakauruhia ki roto.
Ingoa o nga mahi mokihi katoa timeperiodsR he maamaa, he rua nga waahanga: aronga_waenga, kei hea:
aronga me neke koe ki tetahi ra: whakamutunga_n, mua, tenei, muri, muri_n.
wā waenga ki te tātai i te wā: rā, wiki, marama, hauwhā, tau.
Ko te huinga katoa o nga mahi:
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()
Wā wā i roto i ngā wāR
Ka whai hua enei mahi i roto i nga keehi e hiahia ana koe ki te hanga purongo i runga i nga raraunga mai i te wiki, i te marama ranei kua hipa. Ki te whiwhi i te marama whakamutunga, whakamahia te mahi o taua ingoa previous_month():
prmonth <- previous_month()
Whai muri ka whai taonga koe te marama akomanga Tuhinga, ka taea te whiwhi ngawari nga waahanga e whai ake nei:
te ra timatanga o te wa, i roto i ta maatau tauira ko te marama whakamutunga tenei
rā mutunga wā
te maha o nga ra i whakauruhia ki roto i te waa
te raupapa o nga ra i whakauruhia ki roto i te waa
I tua atu, ka taea e koe te tiki i ia waahanga i nga huarahi rereke:
# первый день периода
prmonth$start
start(prmonth)
# последний день периода
prmonth$end
end(prmonth)
# последовательность дат
prmonth$sequence
seq(prmonth)
# количество дней входящих в период
prmonth$length
length(prmonth)
Ka taea hoki e koe te tiki tetahi o nga waahanga ma te whakamahi i te tautohetohe wahi, kei roto i ia mahinga kete. Nga uara pea: te tiimata, te mutunga, te raupapa, te roa.
previous_month(part = "start") # начало периода
previous_month(part = "end") # конец периода
previous_month(part = "sequence") # последовательность дат
previous_month(part = "length") # количество дней в периоде
Na, me titiro ki nga tohenga katoa e waatea ana i roto i nga mahi kete timeperiodsR:
x — Ko te ra tohutoro ka tatauhia te waa, ko te ra o naianei ma te taunoa;
n - Te maha o nga waahi ka whakauruhia ki roto i te waa, hei tauira mo nga wiki e 3 o mua;
part — Ko tehea waahanga o te ahanoa tpr me whiwhi koe, ma te taunoa all;
week_start — Ko te tautohe kei roto anake i nga mahi mo te mahi me nga wiki, ka taea e koe te whakarite te nama o te ra o te wiki ka kiia ko te timatanga. Ma te taunoa, ko te Mane te tiimata o te wiki, engari ka taea 1 - Mane ki te 7 - Rātapu.
No reira, ka taea e koe te tatau i tetahi wa e pa ana ki te wa o naianei, ki etahi atu ra ranei; koinei etahi atu tauira:
# получить 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
Ko te 6 o Oketopa ko te Rātapu:
E hiahia ana matou ki tetahi wa, e pa ana ki te Oketopa 6, ka roa nga wiki e 3 o mua. Karekau he wiki e uru ana ki te Oketopa 6 ano. Nā reira, koinei te wā mai i te 9 o Hepetema ki te 29 o Hepetema.
# получить месяц отстающий на 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
I tenei tauira, kei te pirangi matou ki te marama e 4 marama ki muri, mena ka tiimata mai i te Mahuru 16, 2019, ko Mei 2019.
Te tarai i te vector o nga ra ma te whakamahi i nga wa-waaR
Hei tātari rā i roto timeperiodsR He maha nga kaiwhakahaere:
%left_out% - ka whakatairite i nga taonga tpr akomanga e rua, ka whakahoki mai i te uara mai i te taha maui e ngaro ana i te mea matau.
%left_in% - ka whakatairite i nga mea e rua o te akomanga tpr, ka whakahoki mai i nga ra mai i te mea maui kei roto i te mea matau.
%right_out% - ka whakatairite i nga taonga tpr akomanga e rua, ka whakahoki i te uara mai i te mea matau e ngaro ana i te taha maui.
%right_in% - ka whakatairite i nga mea e rua o te akomanga tpr, ka whakahoki mai i nga ra mai i te ahanoa matau kei te taha maui.
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
I tirotirohia e matou nga waahanga o nga mea i hangaia i te reo R mo te mahi me nga ra. Inaianei hoki ka taea e koe te mahi i nga mahi tatau i nga ra, me te whiwhi tere i nga waa ma te whakamahi i te kete timeperiodsR.
Mena kei te pirangi koe ki te reo R, ka tono atu ahau ki a koe ki te ohauru ki taku hongere waea R4marketing, ka tohatohahia e au nga rauemi whaihua i ia ra mo te whakamahi i te reo R hei whakaoti i o rapanga o ia ra.