Miasa miaraka amin'ny daty ao amin'ny R (fahaizana fototra, ary koa ny fonosana fanosotra sy timeperiodsR)

Raiso ny daty amin'izao fotoana izao amin'ny fiteny fandaharana rehetra, hetsika mitovy amin'ny "Hello world!" Tsy maningana ny teny R.

Ato amin'ity lahatsoratra ity, hojerentsika ny fomba fiasan'ny daty amin'ny fehezanteny fototra amin'ny fiteny R, ary koa hijery fonosana mahasoa maro izay manitatra ny fahaizany rehefa miasa amin'ny daty:

  • lubridate - fonosana ahafahanao manao kajy aritmetika eo anelanelan'ny daty;
  • timeperiodsR - fonosana miasa miaraka amin'ny elanelan'ny fotoana sy ny singany.

Miasa miaraka amin'ny daty ao amin'ny R (fahaizana fototra, ary koa ny fonosana fanosotra sy timeperiodsR)

afa-po

Raha liana amin'ny famakafakana angon-drakitra ianao, ary indrindra ny fiteny R, dia mety ho mahaliana anao ny ahy telegrama и YouTube fantsona. Ny ankamaroan'ny votoaty dia natokana ho an'ny fiteny R.

  1. Miasa amin'ny daty amin'ny syntax fototra R
    1.1. Hanova lahatsoratra ho daty
    1.2. Fanondrahana ireo singa daty ao amin'ny fototra R
  2. Miasa miaraka amin'ny daty mampiasa ny fonosana lubridate
    2.1. Hanova lahatsoratra ho daty amin'ny fampiasana lubridate
    2.2. Fanosotra ny singa daty mampiasa ny fonosana lubridate
    2.3. Hetsika arithmetika misy daty
  3. Asa tsotra miaraka amin'ny fe-potoana, fonosana timeperiodsR
    3.1. Ny elanelan'ny fotoana amin'ny fe-potoanaR
    3.2. Fanivanana zezika daty mampiasa timeperiodsR
  4. famaranana

Miasa amin'ny daty amin'ny syntax fototra R

Hanova lahatsoratra ho daty

Ny Basic R dia manana karazana fiasa miasa amin'ny daty. Ny tsy fahampian'ny syntax fototra dia ny fisian'ny anaran'ny asa sy ny tohan-kevitra dia tena miparitaka ary tsy misy fifandraisana lojika. Na izany aza, mila mahafantatra ireo fiasa fototra amin'ny fiteny ianao, ka hatombotsika amin'izy ireo.

Matetika rehefa mampiditra angona ao amin'ny R, avy amin'ny rakitra csv, na loharano hafa, dia mahazo daty ho lahatsoratra ianao. Raha te hanova ity lahatsoratra ity ho karazana data marina, ampiasao ny fiasa 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"

amin'ny alalan'ny toerana misy anao as.Date() manaiky daty amin'ny endrika roa: YYYY-MM-DD na YYYY/MM/DD.
Raha misy daty amin'ny endrika hafa ny fitambaran'ny angonao dia azonao ampiasaina ny tohan-kevitra format.

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

endrika manaiky ny mpandraharaha amin'ny endrika tady manondro ny elanelan'ny fotoana sy ny endriny; ny soatoavina ampiasaina matetika dia aseho amin'ny tabilao etsy ambany:

endrika
famaritana

%d
Laharan'ny andro amin'ny volana

%a
Fanafohezana ny anaran'ny andro amin'ny herinandro

%A
Anarana feno ny andro amin'ny herinandro

%w
Isan'ny andro amin'ny herinandro (0-6, izay 0 ny alahady)

%m
Fanendrena volana roa isa (01-12)

%b
Fanafohezana ny anaran'ny volana (apr, mar,…)

%B
Anarana volana feno

%y
Fanondroana taona roa isa

%Y
Fanondroana taona efatra isa

%j
Isan'ny andro amin'ny taona (001 - 366)

%U
Isan'ny herinandro amin'ny taona (00 - 53), fiandohan'ny herinandro Alahady

%W
Herinandro isan-taona (00 - 53), fiandohan'ny herinandro Alatsinainy

Araka izany, “26 septambra 2019” no anarana fenon’ny volana sy ny daty ary ny taona. Ity endrika daty ity dia azo faritana amin'ny alalan'ny operatera toy izao manaraka izao:"%B %d, %Y".

izay:

  • %B - Anarana feno ny volana
  • %d - Isan'ny andro amin'ny volana
  • %Y - Fanendrena taona efatra isa

Rehefa mamaritra ny endrika daty dia zava-dehibe ny mampiditra ireo tarehin-tsoratra fanampiny rehetra avy amin'ny tadynao, toy ny tsipihetsika, faingo, fe-potoana, habaka, sns. Amin'ny ohatra ataoko, "26 septambra 2019", dia misy faingo aorian'ny daty, ary mila mametraka faingo amin'ny famaritana endrika:"%B %d, %Y".

Misy toe-javatra rehefa mahazo daty izay tsy mifanaraka amin'ny endrika mahazatra ihany (YYYY-MM-DD na YYYY/MM/DD), fa amin'ny fiteny tsy mitovy amin'ny fiteny mahazatra napetraka ao amin'ny rafitra fiasanao. Ohatra, naka angon-drakitra misy ny daty voatondro toy izao ianao: "15 Desambra 2019." Alohan'ny hamadihana ity tady ity ho daty dia mila manova ny toerana ianao.

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

Fanondrahana ireo singa daty ao amin'ny fototra R

Tsy misy fiasa maro ao amin'ny R fototra izay ahafahanao manala ny ampahany amin'ny daty iray amin'ny zavatra kilasy Date.

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

Ankoatra ny kilasy zavatra fototra Date Ao amin'ny fototra R dia misy karazana data 2 hafa mitahiry mari-potoana: POSIXlt, POSIXct. Ny tena maha samy hafa ireo kilasy sy Date dia izany ankoatra ny daty fitehirizana ny ora.

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

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

# "POSIXct" "POSIXt"

asa Sys.time() mamerina ny daty sy ora ankehitriny amin'ny endrika POSIXct. Ity endrika ity dia mitovy amin'ny dikan'ny UNIXTIME, ary mitahiry ny isan'ny segondra hatramin'ny fiandohan'ny vanim-potoana UNIX (mamatonalina (UTC) nanomboka ny 31 Desambra 1969 hatramin'ny 1 Janoary 1970).

kilasy POSIXlt mitahiry ny ora sy ny daty ary ny singa rehetra ao aminy. Noho izany, dia zavatra manana rafitra sarotra kokoa, fa avy amin'izany dia mora ny mahazo ny daty sy ny ora singa satria raha ny tena izy POSIXlt izany lisitra.

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

Manova ny angona nomerika sy lahatsoratra ho endrika POSIX* tanterahana amin'ny alalan'ny asa as.POSIXct() и as.POSIXlt(). Ireo fiasa ireo dia manana tohan-kevitra vitsivitsy.

  • x - Isa, kofehy na zavatra kilasy Date, izay mila ovaina;
  • tz — Faritra ora, "GMT" default;
  • format - Famaritana ny endrika daty izay nanehoana ny angon-drakitra tamin'ny tohan-kevitra x;
  • fiaviana - Ampiasaina rehefa mamadika isa ho POSIX fotsiny ianao; tsy maintsy mandalo zavatra daty sy ora izay isaina ny segondra amin'ity hevitra ity. Ampiasaina matetika amin'ny fandikana avy amin'ny UNIXTIME.

Raha misy fampahalalana momba ny daty sy ny ora UNIXTIME, dia ampiasao ity ohatra manaraka ity mba hamadihana azy ireo ho daty mazava sy azo vakina:

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

Ao amin'ny fiaviany dia azonao atao ny mamaritra ny fotoana rehetra. Ohatra, raha misy ny daty sy ora ny angonao ho isan'ny segondra nanomboka ny 15 septambra 2019 12:15 tolakandro, dia hamadika azy ho fampiasana daty:

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

Miasa miaraka amin'ny daty mampiasa ny fonosana lubridate

lubridate Angamba ny fonosana malaza indrindra amin'ny fampiasana daty amin'ny fiteny R. Manome kilasy telo fanampiny ho anao izy io.

  • durations — faharetana, i.e. isan'ny segondra eo anelanelan'ny famantaranandro roa;
  • fe-potoana - vanim-potoana mamela anao hanao kajy eo anelanelan'ny daty amin'ny elanelam-potoana azo vakin'ny olombelona: andro, volana, herinandro, sy ny sisa;
  • intervals - zavatra izay manome ny fiandohana sy fiafarana amin'ny fotoana.

Ny fametrahana fonosana fanampiny amin'ny fiteny R dia atao amin'ny fampiasana ny fiasa mahazatra install.packages().

Fametrahana ny fonosana lubridate:

install.packages("lubridate")

Hanova lahatsoratra ho daty amin'ny fampiasana lubridate

Endriky ny fonosana lubridate Manamora ny fizotran'ny famadihana lahatsoratra ho daty, ary ahafahanao manao asa arithmetika misy daty sy ora.

Ny fiasa dia hanampy anao hahazo ny daty na daty sy ora ankehitriny today() и now().

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

Mamadika tady ho daty in lubridate Misy fianakaviamben'ny asa izay ahitana litera telo foana ny anarany, ary manondro ny filaharan'ireo singa daty:

  • y - taona
  • m - volana
  • d - andro

Lisitry ny fiasa hanovana lahatsoratra ho daty amin'ny alàlan'ny lubridate

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

Ohatra vitsivitsy amin'ny famadihana tady ho daty:

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

Araka ny hitanao izao lubridate Mahomby kokoa izy io amin'ny fahafantarana ny famaritana daty ho lahatsoratra, ary ahafahanao mamadika lahatsoratra ho daty nefa tsy mampiasa mpandraharaha fanampiny hamaritana ny endrika.

Fanosotra ny singa daty mampiasa ny fonosana lubridate

Mampiasa koa lubridate afaka mahazo singa iray avy amin'ny daty iray ianao:

dt <- ymd("2017 jan 21")

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

Hetsika arithmetika misy daty

Fa ny tena zava-dehibe sy fototra functionality lubridate dia ny fahafahana manao asa arithmetika isan-karazany miaraka amin'ny daty.

Ny famadihana ny daty dia tanterahana amin'ny asa telo:

  • floor_date — fanodinkodinana mankany amin'ny fotoana farany akaiky indrindra
  • ceiling_date - fihodinana amin'ny fotoana ho avy tsy ho ela
  • round_date - fihodinana amin'ny ora akaiky indrindra

Ny tsirairay amin'ireo asa ireo dia manana hevitra vondronaizay ahafahanao mamaritra ny vondrona boribory: faharoa, minitra, ora, andro, herinandro, volana, roa volana, telovolana, vanim-potoana, antsasaky ny taona, taona

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

Andeha hojerentsika ny fomba hahazoana daty 8 andro aorian'ny daty ankehitriny ary hanao kajy aritmetika hafa eo anelanelan'ny daty roa.

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

Asa tsotra miaraka amin'ny fe-potoana, fonosana timeperiodsR.

timeperiodsR - fonosana vaovao hiasa miaraka amin'ny daty navoaka tao amin'ny CRAN tamin'ny Septambra 2019.

Fametrahana ny fonosana timeperiodsR:

install.packages("timeperiodsR")

Ny tena tanjona dia ny hamaritana haingana ny elanelam-potoana iray mifandraika amin'ny daty iray. Ohatra, amin'ny fampiasana ny asany dia azonao atao mora foana:

  • Raiso ny herinandro, volana, telovolana na taona lasa amin'ny R.
  • Mahazoa isa voafaritra ny elanelana mifandraika amin'ny daty iray, ohatra ny 4 herinandro lasa.
  • Mora ny manaisotra ny singa ao amin'ny elanelan'ny fotoana aterak'izany: ny daty fanombohana sy fiafarana, ny isan'ny andro tafiditra ao anatin'ny elanelam-potoana, ny filaharan'ny daty manontolo izay tafiditra ao.

Anaran'ny fiasa fonosana rehetra timeperiodsR dia intuitive ary misy fizarana roa: tari-dalana_elanelana, aiza:

  • tari-dalana izay ilainao hifindra amin'ny daty nomena: farany_n, teo aloha, ity, manaraka, manaraka_n.
  • vonjimaika elanelana kajy ny fe-potoana: andro, herinandro, volana, telovolana, taona.

Fanompoana feno:

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

Ny elanelan'ny fotoana amin'ny fe-potoanaR

Ireo fiasa ireo dia ilaina amin'ny tranga izay ilanao hananganana tatitra mifototra amin'ny angona tamin'ny herinandro na volana lasa. Mba hahazoana ny volana farany, ampiasao ny fiasan'ny anarana mitovy previous_month():

prmonth <- previous_month()

Aorian'izay dia hanana zavatra ianao prmonth kilasy tpr, izay mora azo avy amin'ireto singa manaraka ireto:

  • ny daty nanombohan'ny vanim-potoana, raha ny ohatra asehontsika dia ity no volana farany
  • daty faran'ny vanim-potoana
  • isan'ny andro tafiditra ao anatin'ny fe-potoana
  • filaharan'ny daty tafiditra ao anatin'ny fe-potoana

Ankoatra izany, azonao atao ny mahazo ny singa tsirairay amin'ny fomba samihafa:

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

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

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

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

Azonao atao koa ny mahazo ny singa rehetra amin'ny fampiasana ny argument anjara, izay hita ao amin'ny fiasan'ny fonosana tsirairay. Sanda mety: fanombohana, fiafarana, filaharana, halavany.

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

Andeha àry hojerentsika ny hevitra rehetra misy ao amin'ny fonosana fonosana timeperiodsR:

  • x - Ny datin'ny fanondroana ny fe-potoana kajy, ny daty amin'izao fotoana izao;
  • n - Ny isan'ny elanelam-potoana izay ho tafiditra ao anatin'ny fe-potoana, ohatra ny 3 herinandro teo aloha;
  • part - Inona no singa amin'ny zavatra tpr mila mahazo ianao, amin'ny alàlan'ny default all;
  • week_start — Ny adihevitra dia tsy misy afa-tsy amin'ny fiasa miasa amin'ny herinandro, ary mamela anao hametraka ny isan'ny andro amin'ny herinandro izay hoheverina ho fiandohany. 1 - Alatsinainy hatramin'ny 7 - Alahady.

Noho izany, azonao atao ny manao kajy ny fe-potoana rehetra mifandraika amin'ny daty ankehitriny na daty hafa; ireto misy ohatra vitsivitsy:

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

Alahady ny 6 Oktobra:
Miasa miaraka amin'ny daty ao amin'ny R (fahaizana fototra, ary koa ny fonosana fanosotra sy timeperiodsR)

Mila fe-potoana izay, raha oharina amin'ny 6 Oktobra, haharitra 3 herinandro teo aloha. Tsy tafiditra ao anatin’izany ny herinandro ahitana ny 6 oktobra ny tenany. Araka izany, ny 9 septambra ka hatramin’ny 29 septambra izao no fotoana.

Miasa miaraka amin'ny daty ao amin'ny R (fahaizana fototra, ary koa ny fonosana fanosotra sy 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

Amin'ity ohatra ity dia mahaliana antsika ny volana izay 4 volana lasa izay, raha manomboka amin'ny 16 septambra 2019 isika, dia ny May 2019 izany.

Fanivanana zezika daty mampiasa timeperiodsR

Hanasivana ny daty ao timeperiodsR Misy mpandraharaha maromaro:

  • %left_out% - mampitaha zavatra roa kilasy tpr, ary mamerina ny sanda avy amin'ny ankavia izay tsy hita ao amin'ny havanana.
  • %left_in% - mampitaha zavatra roa amin'ny kilasy tpr, ary mamerina ny daty avy amin'ny zavatra havia izay tafiditra ao amin'ny havanana.
  • %right_out% - mampitaha zavatra roa kilasy tpr, ary mamerina ny sanda avy amin'ny havanana izay tsy hita amin'ny ankavia.
  • %right_in% - mampitaha zavatra roa ao amin'ny kilasy tpr, ary mamerina daty avy amin'ny zavatra havanana izay hita ao amin'ny ankavia.

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

Ao amin'ny fonosana timeperiodsR misy iray ofisialy amin'ny teny Rosiana YouTube playlist.

famaranana

Nodinihinay tamin'ny antsipiriany ny kilasin'ny zavatra natao tamin'ny fiteny R mba hiasa amin'ny daty. Ankehitriny dia afaka manao asa arithmetika amin'ny daty ianao, ary mahazo haingana ny fe-potoana rehetra mampiasa ny fonosana timeperiodsR.

Raha liana amin'ny fiteny R ianao dia manasa anao hisoratra anarana amin'ny fantsona telegrama R4marketing, izay izarako fitaovana mahasoa isan'andro momba ny fampiasana ny teny R amin'ny famahana ny olanao andavanandro.

Source: www.habr.com

Add a comment