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.

Te mahi me nga ra i roto i te R (nga kaha taketake, me nga kohinga whakahinuhinu me nga wa-waR)

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.

  1. Te mahi me nga ra i roto i te wetereo R taketake
    1.1. Tahuri kupu ki te ra
    1.2. Te tango i nga waahanga ra i roto i te R taketake
  2. Te mahi me nga ra ma te whakamahi i te kete whakahinuhinu
    2.1. Hurihia te kuputuhi ki tenei ra ma te whakahinuhinu
    2.2. Te tango i nga waahanga ra ma te whakamahi i te kete whakahinuhinu
    2.3. Nga mahi tatau me nga ra
  3. Nga mahi ngawari me nga wa, te kete timeperiodsR
    3.1. Wā wā i roto i ngā wāR
    3.2. Te tarai i te vector o nga ra ma te whakamahi i nga wa-waaR
  4. mutunga

Te mahi me nga ra i roto i te wetereo R taketake

Tahuri kupu ki te ra

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.
  • 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:
Te mahi me nga ra i roto i te R (nga kaha taketake, me nga kohinga whakahinuhinu me nga wa-waR)

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.

Te mahi me nga ra i roto i te R (nga kaha taketake, me nga kohinga whakahinuhinu me nga wa-waR)

# получить месяц отстающий на 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 te kete timeperiodsR kei reira tetahi mana, reo Ruhia YouTube rārangipāpāho.

mutunga

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.

Source: will.com

Tāpiri i te kōrero