ProHoster > blog > Amministrazzjoni > Ħidma bid-dati f'R (kapaċitajiet bażiċi, kif ukoll il-pakketti lubridate u timeperiodsR)
Ħidma bid-dati f'R (kapaċitajiet bażiċi, kif ukoll il-pakketti lubridate u timeperiodsR)
Ikseb id-data attwali fi kwalunkwe lingwa ta 'programmar, operazzjoni ekwivalenti għal "Hello world!" Il-lingwa R mhijiex eċċezzjoni.
F'dan l-artikolu, se nħarsu lejn kif taħdem id-dati fis-sintassi bażika tal-lingwa R, u nħarsu wkoll lejn diversi pakketti utli li jespandu l-kapaċitajiet tagħha meta taħdem bid-dati:
lubridate — pakkett li jippermettilek twettaq kalkoli aritmetiċi bejn id-dati;
timeperiodsR — pakkett għax-xogħol bl-intervalli tal-ħin u l-komponenti tagħhom.
Kontenut
Jekk inti interessat fl-analiżi tad-dejta, u b'mod partikolari l-lingwa R, tista 'tkun interessat f'my telegramma и YouTube kanali. Ħafna mill-kontenut huwa ddedikat għal-lingwa R.
Basic R għandu sett ta 'funzjonijiet biex taħdem bid-dati. L-iżvantaġġ tas-sintassi bażika huwa li l-każ tal-ismijiet tal-funzjonijiet u l-argumenti huwa mifrux ħafna u prattikament m'għandu l-ebda konnessjoni loġika. Madankollu, trid tkun taf il-funzjonijiet bażiċi tal-lingwa, għalhekk nibdew magħhom.
Ħafna drabi meta tagħbija data f'R, minn fajls csv, jew sorsi oħra, tirċievi data bħala test. Biex tikkonverti dan it-test għat-tip ta' dejta korrett, uża l-funzjoni 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"
Permezz ta 'default as.Date() jaċċetta data f'żewġ formati: SSSS-XX-JJ jew SSSS/XX/JJ.
Jekk is-sett tad-dejta tiegħek fih dati f'xi format ieħor, tista' tuża l-argument format.
as.Date("September 26, 2019", format = "%B %d, %Y")
format jaċċetta operaturi f'forma ta 'sekwenza li tindika kwalunkwe intervall ta' ħin u l-format tiegħu; il-valuri l-aktar użati huma murija fit-tabella hawn taħt:
%w
Numru tal-ġurnata tal-ġimgħa (0-6, fejn 0 huwa l-Ħadd)
%m
Deżinjazzjoni ta' xahar b'żewġ ċifri (01-12)
%b
Abbrevjazzjoni tal-isem tax-xahar (apr, mar, …)
%B
Isem ix-xahar sħiħ
%y
Deżinjazzjoni ta' sena b'żewġ figuri
%Y
Deżinjazzjoni ta' sena b'erba' figuri
%j
Numru tal-ġurnata fis-sena (001 - 366)
%U
Numru tal-ġimgħa fis-sena (00 - 53), il-bidu tal-ġimgħa l-Ħadd
%W
Numru tal-ġimgħa fis-sena (00 - 53), il-bidu tal-ġimgħa t-Tnejn
Għaldaqstant, "26 ta' Settembru, 2019" huwa l-isem sħiħ tax-xahar, id-data u s-sena. Dan il-format tad-data jista' jiġi deskritt bl-użu ta' operaturi kif ġej:"%B %d, %Y".
Fejn:
%B — Isem sħiħ tax-xahar
%d — Numru tal-ġurnata fix-xahar
%Y — Deżinjazzjoni tas-sena b'erba' figuri
Meta tiddeskrivi l-format tad-data, huwa importanti li tinkludi l-karattri addizzjonali kollha mis-sekwenza tiegħek, bħal daxxijiet, virgoli, perjodi, spazji, eċċ. Fl-eżempju tiegħi, "26 ta' Settembru 2019", hemm virgola wara d-data, u trid ukoll tpoġġi virgola fid-deskrizzjoni tal-format:"%B %d, %Y".
Hemm sitwazzjonijiet meta tirċievi data li mhux biss ma tikkorrispondix għal formati standard (SSSS-XX-JJ jew SSSS/XX/JJ), iżda wkoll f'lingwa li hija differenti minn dik default installata fis-sistema operattiva tiegħek. Pereżempju, niżżilt dejta fejn id-data hija indikata hekk: "15 ta' Diċembru 2019." Qabel ma tikkonverti din is-sekwenza għal data, għandek bżonn tibdel il-lokal.
# Меняем локаль
Sys.setlocale("LC_TIME", "Russian")
# Конвертируем строку в дату
as.Date("Декабрь 15, 2019 г.", format = "%B %d, %Y")
L-estrazzjoni tal-komponenti tad-data f'R bażiku
M'hemmx ħafna funzjonijiet f'R bażiku li jippermettulek estratt kwalunkwe parti ta 'data minn oġġett ta' klassi data.
current_date <- Sys.Date() # текущая дата
weekdays(current_date) # получить номер дня недели
months(current_date) # получить номер месяца в году
quarters(current_date) # получить номер квартала в году
Minbarra l-klassi tal-oġġett prinċipali data f'R bażiku hemm 2 tipi ta' dejta oħra li jaħżnu timestamp: POSIXlt, POSIXct. Id-differenza ewlenija bejn dawn il-klassijiet u data hija li minbarra d-data jaħżnu l-ħin.
# получить текущую дату и время
current_time <- Sys.time()
# узнать класс объекта current_time
class(current_time)
# "POSIXct" "POSIXt"
Funzjoni Sys.time() jirritorna d-data u l-ħin kurrenti fil-format POSIXct. Dan il-format huwa simili fit-tifsira għal UNIXTIME, u jaħżen in-numru ta' sekondi mill-bidu tal-era UNIX (nofsillejl (UTC) mill-31 ta’ Diċembru, 1969 sal-1 ta’ Jannar, 1970).
Klassi POSIXlt jaħżen ukoll il-ħin u d-data, u l-komponenti kollha tagħhom. Għalhekk, huwa oġġett bi struttura aktar kumplessa, iżda li minnu huwa faċli li tikseb kwalunkwe komponent ta 'data u ħin minħabba fil-fatt POSIXlt dan lista.
# Получаем текущую дату и время
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 # часовой пояс
Konverżjoni ta 'data numerika u tat-test għal formati POSIX* mwettqa minn funzjonijiet as.POSIXct() и as.POSIXlt(). Dawn il-funzjonijiet għandhom sett żgħir ta 'argumenti.
x — Numru, string jew oġġett tal-klassi data, li jeħtieġ li jiġi konvertit;
tz — Żona tal-ħin, default "GMT";
format — Deskrizzjoni tal-format tad-data li fih id-dejta mgħoddija lill-argument x hija rappreżentata;
origin — Użat biss meta tikkonverti numru għal POSIX; trid tgħaddi oġġett tad-data u ħin li minnu jingħaddu s-sekonda għal dan l-argument. Tipikament użat għat-traduzzjoni minn UNIXTIME.
Jekk l-informazzjoni tad-data u l-ħin tiegħek tinsab fi UNIXTIME, imbagħad biex jaqilbuhom f'data ċara u li tinqara, uża l-eżempju li ġej:
# Конвертируем UNIXTIME в читаемую дату
as.POSIXlt(1570084639, origin = "1970-01-01")
Fl-oriġini tista 'tispeċifika kwalunkwe timestamp. Pereżempju, jekk id-dejta tiegħek fiha d-data u l-ħin bħala n-numru ta' sekondi mill-15 ta' Settembru 2019 12:15 pm, imbagħad biex taqlebha għal data uża:
# Конвертируем UNIXTIME в дату учитывая что начало отсчёта 15 сентября 2019 12:15
as.POSIXlt(1546123, origin = "2019-09-15 12:15:00")
Ħidma mad-dati bl-użu tal-pakkett lubridate
lubridate Forsi l-aktar pakkett popolari biex taħdem bid-dati fil-lingwa R. Jipprovdilek tliet klassijiet addizzjonali.
durations — tul ta’ żmien, i.e. numru ta' sekondi bejn żewġ timestamps;
perjodi - perjodi jippermettulek tagħmel kalkoli bejn id-dati f'intervalli li jinqraw mill-bniedem: ġranet, xhur, ġimgħat, eċċ;
intervalli - oġġetti li jipprovdu l-punt tal-bidu u tat-tmiem fiż-żmien.
L-installazzjoni ta 'pakketti addizzjonali fil-lingwa R titwettaq bl-użu tal-funzjoni standard install.packages().
Installazzjoni tal-pakkett lubridate:
install.packages("lubridate")
Ikkonverti t-test sal-lum billi tuża lubridate
Karatteristiċi tal-pakkett lubridate jissimplifika b'mod sinifikanti l-proċess tal-konverżjoni tat-test f'data, u jippermetti wkoll li twettaq kwalunkwe operazzjoni aritmetika bid-dati u l-ħinijiet.
Il-funzjonijiet jgħinuk tikseb id-data jew id-data u l-ħin attwali today() и now().
today() # текущая дата
now() # текущая дата и время
Biex tikkonverti string għal data fi lubridate Hemm familja sħiħa ta' funzjonijiet li l-ismijiet tagħhom dejjem jikkonsistu fi tliet ittri, u jindikaw is-sekwenza tal-komponenti tad-data:
y - sena
m - xahar
d - jum
Lista ta' funzjonijiet għall-konverżjoni tat-test sal-lum permezz tal-lubridate
ymd()
ydm()
mdy()
myd()
dmy()
dym()
yq()
Xi eżempji għall-konverżjoni ta' kordi għal dati:
ymd("2017 jan 21")
mdy("March 20th, 2019")
dmy("1st april of 2018")
Kif tista 'tara lubridate Huwa ħafna aktar effiċjenti biex tirrikonoxxi d-deskrizzjonijiet tad-data bħala test, u tippermettilek tikkonverti test għal data mingħajr ma tuża operaturi addizzjonali biex tiddeskrivi l-format.
Kull waħda minn dawn il-funzjonijiet għandha argument unitàli jippermettilek tispeċifika l-unità tal-arrotondament: it-tieni, minuta, siegħa, jum, ġimgħa, xahar, xahrejn, kwart, staġun, nofs sena, sena
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") # округлить до полугодия
Mela ejja nsemmu kif tikseb data li hija 8 ijiem wara d-data kurrenti u nagħmlu diversi kalkoli aritmetiċi oħra bejn iż-żewġ dati.
today() + days(8) # какая дата будет через 8 дней
today() - months(2) # какая дата была 2 месяца назад
today() + weeks(12) # какая дата будет через 12 недель
today() - years(2) # какая дата была 2 года назад
Xogħol simplifikat b'perjodi, pakkett timeperiodsR.
timeperiodsR — pakkett ġdid għax-xogħol bid-dati li ġie ppubblikat fuq CRAN f'Settembru 2019.
Installazzjoni tal-pakkett timeperiodsR:
install.packages("timeperiodsR")
L-għan ewlieni huwa li jiġi determinat malajr ċertu intervall ta 'żmien relattiv għal data partikolari. Pereżempju, billi tuża l-funzjonijiet tagħha tista’ faċilment:
Ikseb l-aħħar ġimgħa, xahar, kwart jew sena f'R.
Ikseb numru speċifikat ta' intervalli ta' ħin relattiv għal data, pereżempju l-aħħar 4 ġimgħat.
Huwa faċli li jiġu estratti l-komponenti tiegħu mill-intervall ta 'żmien li jirriżulta: id-data tal-bidu u t-tmiem, in-numru ta' ġranet inklużi fl-intervall, is-sekwenza sħiħa ta 'dati li huma inklużi fih.
Isem tal-funzjonijiet kollha tal-pakkett timeperiodsR huma intuwittivi u jikkonsistu f'żewġ partijiet: direzzjoni_intervall, fejn:
direzzjoni li fiha trid timxi relattiva għal data partikolari: last_n, previous, this, next, next_n.
temporali intervall biex tikkalkula l-perjodu: jum, ġimgħa, xahar, kwart, sena.
Sett sħiħ ta' karatteristiċi:
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()
Intervalli ta' ħin f'perjodi ta' żmienR
Dawn il-funzjonijiet huma utli f'każijiet fejn għandek bżonn tibni rapporti bbażati fuq data mill-aħħar ġimgħa jew xahar. Biex tikseb l-aħħar xahar, uża l-funzjoni tal-istess isem previous_month():
prmonth <- previous_month()
Wara li jkollok oġġett f'xahar klassi tpr, li minnu jistgħu jinkisbu faċilment il-komponenti li ġejjin:
id-data tal-bidu tal-perjodu, fl-eżempju tagħna dan huwa l-aħħar xahar
data tat-tmiem tal-perjodu
numru ta’ jiem inklużi fil-perjodu
sekwenza ta' dati inklużi fil-perjodu
Barra minn hekk, tista 'tikseb kull wieħed mill-komponenti b'modi differenti:
# первый день периода
prmonth$start
start(prmonth)
# последний день периода
prmonth$end
end(prmonth)
# последовательность дат
prmonth$sequence
seq(prmonth)
# количество дней входящих в период
prmonth$length
length(prmonth)
Tista 'wkoll tikseb kwalunkwe mill-komponenti billi tuża l-argument parti, li hija preżenti f'kull waħda mill-funzjonijiet tal-pakkett. Valuri possibbli: bidu, tmiem, sekwenza, tul.
previous_month(part = "start") # начало периода
previous_month(part = "end") # конец периода
previous_month(part = "sequence") # последовательность дат
previous_month(part = "length") # количество дней в периоде
Mela ejja nħarsu lejn l-argumenti kollha disponibbli fil-funzjonijiet tal-pakkett timeperiodsR:
x — Id-data ta' referenza li minnha ser jiġi kkalkolat il-perjodu ta' żmien, id-data kurrenti awtomatikament;
n — In-numru ta' intervalli li se jiġu inklużi fil-perjodu, pereżempju t-3 ġimgħat preċedenti;
part — Liema komponent tal-oġġett tpr għandek bżonn tikseb, awtomatikament all;
week_start — L-argument huwa preżenti biss fil-funzjonijiet għax-xogħol bil-ġimgħat, u jippermettilek li tissettja n-numru tal-jum tal-ġimgħa li se jitqies il-bidu tiegħu. B'mod awtomatiku, il-bidu tal-ġimgħa huwa t-Tnejn, iżda tista' tissettja kwalunkwe minn 1 - It-Tnejn sas-7 - Il-Ħadd.
Għalhekk, tista 'tikkalkula kwalunkwe perjodu ta' żmien relattiv għad-data attwali jew kwalunkwe data oħra mogħtija; hawn ftit eżempji oħra:
# получить 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
Is-6 ta’ Ottubru huwa l-Ħadd:
Għandna bżonn perjodu li, meta mqabbel mas-6 ta’ Ottubru, jieħu t-3 ġimgħat ta’ qabel. Mhux inkluża l-ġimgħa li tinkludi s-6 ta’ Ottubru stess. Għaldaqstant, dan huwa l-perjodu mid-9 ta’ Settembru sad-29 ta’ Settembru.
# получить месяц отстающий на 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
F'dan l-eżempju, aħna interessati fix-xahar li kien 4 xhur ilu, jekk nibdew mis-16 ta 'Settembru, 2019, allura kien Mejju 2019.
Iffiltrar ta' vettur ta' dati bl-użu ta' timeperiodsR
Biex tiffiltra d-dati fi timeperiodsR Hemm diversi operaturi:
%left_out% - iqabbel żewġ oġġetti tal-klassi tpr, u jirritorna l-valur minn dak tax-xellug li huwa nieqes f'dak tal-lemin.
%left_in% - iqabbel żewġ oġġetti tal-klassi tpr, u jirritorna d-dati mill-oġġett tax-xellug li huma inklużi f'dak tal-lemin.
%right_out% - iqabbel żewġ oġġetti tal-klassi tpr, u jirritorna l-valur minn dak tal-lemin li huwa nieqes minn dak tax-xellug.
%right_in% - iqabbel żewġ oġġetti tal-klassi tpr, u jirritorna dati mill-oġġett tal-lemin li huma preżenti f'dak tax-xellug.
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
Fil-pakkett timeperiodsR hemm waħda uffiċjali, bil-lingwa Russa Playlist ta' YouTube.
Konklużjoni
Aħna eżaminajna fid-dettall il-klassijiet ta 'oġġetti li huma ddisinjati fil-lingwa R biex jaħdmu bid-dati. Ukoll issa tista 'twettaq operazzjonijiet aritmetiċi fuq dati, u malajr tikseb kwalunkwe perjodi ta' żmien billi tuża l-pakkett timeperiodsR.
Jekk inti interessat fil-lingwa R, nistiednek biex tabbona għall-kanal tat-telegram tiegħi R4marketing, li fiha naqsam materjali utli fuq bażi ta' kuljum dwar l-użu tal-lingwa R biex issolvi l-problemi tiegħek ta' kuljum.