"Hello world!" ááŸáá·áºáá®áá»áŸáá±á¬ áááºááá·áºáááá¯ááááºáá¬áá¬á áá¬ážááŒáá·áºáááᯠáááºááŸááááºá áœá²ááᯠááá°áá«á R áá¬áá¬á áá¬ážááẠááŒáœááºážáá»ááºááá¯ááºáá«á
á€áá±á¬ááºážáá«ážááœááºá áááºá áœá²áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáá¯á¶á¡á¬áž R áá¬áá¬á áá¬ážáá¡ááŒá±áá¶á¡á á®á¡áá¶ááœáẠáááºááá¯á·á¡áá¯ááºáá¯ááºáááºááá¯ááŒáá·áºááŸá¯áááºááŒá áºááŒá®ážá áááºá áœá²áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá«áááºážáá áœááºážáááºáá»á¬ážááá¯áá»á²á·ááœááºááá·áºá¡áá¯á¶ážáááºáá±á¬áááºáá±á·áá»áºáá»á¬ážá áœá¬ááá¯áááºážááŒáá·áºááŸá¯áá«áááºá
lubridate
- áááºá áœá²áá»á¬ážááŒá¬ážááœáẠááááºážáááºá¹áá»á¬ááœááºáá»ááºááŸá¯áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºá á±ááá·áº á¡áá¯ááºáá áºáá¯átimeperiodsR
- á¡áá»áááºáá¬áá¡ááá¯ááºážá¡ááŒá¬ážáá»á¬ážááŸáá·áº áááºážááá¯á·á á¡á áááºá¡ááá¯ááºážáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáááºá¡ááœáẠáááºáá±á·ááºá»áá áºáá¯á
á¡ááŒá±á¬ááºážá¡áá¬
á¡áááºá áááºááẠáá±áá¬ááœá²ááŒááºážá
áááºááŒá¬ááŒááºážááᯠá
áááºáááºá
á¬ážáá«áá á¡áá°ážáááŒáá·áº R áá¬áá¬á
áá¬ážááᯠáááºá
áááºáááºá
á¬ážáá±áááºá
á¡ááŒá±áᶠR syntax ááœáẠáááºá áœá²áá»á¬ážááŒáá·áº á¡áá¯ááºáá¯ááºááŒááºážá
1.1 áá á¬áá¬ážááᯠáááºá áœá²ááá¯á· ááŒá±á¬ááºážáá«á
1.2 áá¡ááŒá±áᶠR ááœáẠáááºá áœá²á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá¯ááºáá°ááŒááºážá áá»á±á¬áá®á¡áá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áááºá áœá²áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºááŒááºážá
2.1 álubricadate ááᯠá¡áá¯á¶ážááŒá¯á á á¬áá¬ážááᯠáááºá áœá²ááá¯á· ááŒá±á¬ááºážáá«á
2.2 ááá»á±á¬áá®á¡áá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áááºá áœá²á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá¯ááºáá°ááŒááºážá
2.3 ááááºá áœá²áá»á¬ážááŒáá·áº ááááºážáááºá¹áá»á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž áá¬ááá»á¬ážá timeperiodsR áááºáá±á·áá»áºááŒáá·áº ááá¯ážááŸááºážáá±á¬ á¡áá¯ááº
3.1 átimeperiodsR ááŸá á¡áá»áááºáá¬ááá»á¬áž
3.2 átimeperiodsR ááᯠá¡áá¯á¶ážááŒá¯á áááºá áœá²áá»á¬ážá vector ááᯠá á áºáá¯ááºááŒááºážá áá±á¬ááºáá»ááº
á¡ááŒá±áᶠR syntax ááœáẠáááºá áœá²áá»á¬ážááŒáá·áº á¡áá¯ááºáá¯ááºááŒááºážá
á á¬áá¬ážááᯠáááºá áœá²ááá¯á· ááŒá±á¬ááºážáá«á
Basic R ááœáẠáááºá áœá²áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºááẠáá¯ááºáá±á¬ááºáá»ááºá¡á á¯á¶ááŸááááºá á¡ááŒá±áᶠsyntax áá¡á¬ážáááºážáá»ááºááŸá¬ function á¡áááºáá»á¬ážááŸáá·áº arguments áá»á¬ážááẠá¡ááœááºááŒáá·áºáá»á²áá±ááŒá®áž áááºááœá±á·ááœáẠáá¯áá¹áááááºá ááºááŸá¯áááŸáááŒááºážááŒá±á¬áá·áºááŒá áºáááºá ááá¯á·áá±á¬áºá áááºááẠáá¬áá¬á áá¬ážá á¡ááŒá±áá¶áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááááºááá¯á¡ááºáááºá ááá¯á·ááŒá±á¬áá·áº áááºážááá¯á·ááŸáá·áº á áááºáá«áááºá
á¡áá»á¬ážá
á¯ááŸá¬ R ááá¯á· áá±áá¬áá»á¬ážááᯠcsv ááá¯ááºáá»á¬áž ááá¯á·ááá¯áẠá¡ááŒá¬ážáááºážááŒá
áºáá»á¬ážá០áááºááá·áºá¡áá«ááœáẠáááºááẠá
á¬áá¬ážá¡ááŒá
Ạáááºá
áœá²áá
áºáá¯ááᯠáááºáá¶áááŸááááºáááºá á€á
á¬áá¬ážááᯠááŸááºáááºáá±á¬áá±áá¬á¡áá»áá¯ážá¡á
á¬ážááá¯á· ááŒá±á¬ááºážááẠáá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯áá«á 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"
áá¯á¶ááŸááºá¡á¬ážááŒááºá· as.Date()
áááºá
áœá²ááᯠáá¯á¶á
á¶ááŸá
áºáá»áá¯ážááŒáá·áº áááºáá¶áááº- YYYY-MM-DD ááá¯á·ááá¯áẠYYYY/MM/DD.
ááá·áºáá±áá¬á¡ááœá²ááœáẠá¡ááŒá¬ážáá±á¬áºáááºá¡áá»áá¯á·ááœáẠáááºá
áœá²áá»á¬ážáá«ááŸááá«áá áááºááẠá¡ááŒá±á¬ááºážááŒáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá format
.
as.Date("September 26, 2019", format = "%B %d, %Y")
áá¯á¶á ᶠá¡áá»áááºá¡ááá¯ááºážá¡ááŒá¬ážááŸáá·áº áááºážááá±á¬áºáááºááá¯á·ááᯠáá±á¬áºááŒááá·áº á á¬áááºážáá¯á¶á á¶ááŒáá·áº á¡á±á¬áºááá±áá¬áá»á¬ážááᯠáááºáá¶áááºá á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážáááºááá¯ážáá»á¬ážááᯠá¡á±á¬ááºáá«ááá¬ážááœáẠááŒáá¬ážáááº-
áá¯á¶á
á¶
áá±á«áºááŒáá»ááº
%d
áááœáẠáá±á· áá¶áá«ááº
%a
áááºááá¹ááááºááá±á·á¡áááºáá¡ááá¯áá±á¬ááº
%A
áááºááá¹ááááºááá±á·áá¡áááºá¡ááŒáá·áºá¡á
á¯á¶
%w
áááºááá¹ááááºááá±á·áááºáá¶áá«áẠ(á-áá á áááºááááºá¹áááœá±)á
%m
ááááºážááŸá
áºáá¯á¶áž áááºááŸááºááŒááºáž (áá-áá)á
%b
áá¡ááẠá¡ááá¯áá±á¬áẠ(á§ááŒá®á áááºáá âŠ)
%B
áá¡áááºá¡ááŒáá·áºá¡á
á¯á¶
%y
ááááºážááŸá
áºáá¯á¶ážáááºááŸááºááŒááºážá
%Y
ááŸá
áºááááºáž áá±ážáá¯á¶áž áááºááŸááºááŒááºáž
%j
ááá¹ááá¬áẠ(ááá - ááá)á
%U
áá¶áááºáá
áºááŸá
áºááœáẠ(áá - á
á) áááááºá¹áááœá±áááºááá¹ááááºáá¡á
%W
áááºááá¹áááẠááááºážááẠááá¯ááŸá
Ạ(áá - á
á) ááœáẠá¡áááºá
áẠááááºá¹áá¬áá±á· ááŒá
áºáááºá
ááá¯á·ááŒá±á¬áá·áºá "á
ááºáááºáᬠ26á 2019" ááẠáá áááºá
áœá²ááŸáá·áº ááŸá
áºá á¡áááºá¡ááŒáá·áºá¡á
á¯á¶ááŒá
áºáááºá á€áááºá
áœá²áá±á¬áºáááºááẠá¡á±á¬áºááá±áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡á±á¬ááºáá«á¡ááá¯ááºáž áá±á¬áºááŒááá¯ááºáá«áááºá"%B %d, %Y"
.
áááºááŸá¬:
%B
- áá¡áááºá¡ááŒáá·áºá¡á á¯á¶%d
- ááá áºáááá±á·á¡áá±á¡ááœááº%Y
- ááááºážáá±ážáá¯á¶ážááŸá ẠáááºááŸááºááŒááºážá
áááºá
áœá²áá±á¬áºáááºááᯠáá±á¬áºááŒááá·áºá¡áá«á áá»ááºážááŒá±á¬ááºážáá»á¬ážá áá±á¬áºáá¬áá»á¬ážá áá¬áá¡ááá¯ááºážá¡ááŒá¬ážáá»á¬ážá áá±áá¬ááœááºáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážáá²á·ááá¯á·áá±á¬ ááá·áºá
á¬ááŒá±á¬ááºážá០áá±á¬ááºáááºá¡áá¹ááá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážááẠá¡áá±ážááŒá®ážáá«áááºá áá»áœááºá¯ááºáá¥ááá¬ááœááºá "á
ááºáááºáᬠ26á 2019" ááœááºá áááºá
áœá²ááŒá®ážáá±á¬ááºáá±á¬áºáá¬áá
áºáá¯ááŸáááŒá®ážá áá±á¬áºáááºáá±á¬áºááŒáá»ááºááœááºáááºáž áá±á¬áºáá¬ááá·áºááẠááá¯á¡ááºáááº-"%B %d, %Y"
.
á á¶áá±á¬áºáááºáá»á¬ážááŸáá·áº áááá¯ááºáá®áá±á¬ áááºá áœá²áá áºáá¯ááᯠáááºáá¶áááŸáááá·áºá¡áá« á¡ááŒá±á¡áá±áá»á¬ážááŸááá«áááºá (YYYY-MM-DD ááá¯á·ááá¯áẠYYYY/MM/DD)áá«áá±ááá·áºáááºáž ááá·áºáááºáááºááŸá¯á áá áºááŸá¬ ááá·áºááœááºážáá¬ážáá²á· áá°áááºážáá¬áá¬á áá¬ážáá²á· ááá°áá«áá°ážá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠá€áá²á·ááá¯á·áá±á¬ áááºá áœá²ááᯠáá±á¬áºááŒáá¬ážááá·áº áá±áá¬ááᯠáá±á«ááºážáá¯ááºáá¯ááºáá¬ážáááº- "áá®áááºáᬠ15á 2019"á á€á á¬ááŒá±á¬ááºážááᯠáááºá áœá²áá áºáá¯ááá¯á· áááŒá±á¬ááºážáá®á áááºááẠáá±ááá¹ááááᯠááŒá±á¬ááºážáá²ááẠááá¯á¡ááºáááºá
# ÐеМÑеЌ лПкалÑ
Sys.setlocale("LC_TIME", "Russian")
# ÐПМвеÑÑОÑÑеЌ ÑÑÑÐŸÐºÑ Ð² ЎаÑÑ
as.Date("ÐекабÑÑ 15, 2019 г.", format = "%B %d, %Y")
á¡ááŒá±áᶠR ááœáẠáááºá áœá²á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá¯ááºáá°ááŒááºážá
á¡ááŒá±áᶠR ááœáẠáááºá¡á¬áž class object áá áºáá¯á០áááºá áœá²áá áºáá¯á áááºááá·áºá¡á áááºá¡ááá¯ááºážááá¯áááᯠáá¯ááºáá°ááœáá·áºááŒá¯ááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá áœá¬áááŸááá«á áá±á·á áŸá².
current_date <- Sys.Date() # ÑекÑÑÐ°Ñ ÐŽÐ°Ñа
weekdays(current_date) # пПлÑÑОÑÑ ÐœÐŸÐŒÐµÑ ÐŽÐœÑ ÐœÐµÐŽÐµÐ»Ðž
months(current_date) # пПлÑÑОÑÑ ÐœÐŸÐŒÐµÑ ÐŒÐµÑÑÑа в гПЎÑ
quarters(current_date) # пПлÑÑОÑÑ ÐœÐŸÐŒÐµÑ ÐºÐ²Ð°ÑÑала в гПЎÑ
main object class á¡ááŒáẠáá±á·á áŸá² á¡ááŒá±áᶠR ááœáẠá¡áá»áááºáá¶ááááºááᯠááááºážáááºážááá·áº áá±á¬ááºááẠáá±áᬠá¡áá»áá¯ážá¡á á¬áž á áá¯ááŸááááºá POSIXlt, POSIXct. á€á¡áááºážáá»á¬ážá¡ááŒá¬áž á¡ááá ááœá¬ááŒá¬ážáá»áẠáá±á·á áŸá² á¡á²áá«á áá°ááá¯á· ááááºážáááºážáá²á· áááºá áœá²á¡ááŒáẠá¡áá»áááºááœá± áá«áá«áááºá
# пПлÑÑОÑÑ ÑекÑÑÑÑ ÐŽÐ°ÑÑ Ðž вÑеЌÑ
current_time <- Sys.time()
# ÑзМаÑÑ ÐºÐ»Ð°ÑÑ ÐŸÐ±ÑекÑа current_time
class(current_time)
# "POSIXct" "POSIXt"
áá¯ááºáá±á¬ááºáá»áẠSys.time()
áááºááŸááááºá
áœá²ááŸáá·áº á¡áá»áááºááᯠáá±á¬áºáááºááŒáá·áº ááŒááºáá±ážáááºá POSIXct. á€áá¯á¶á
á¶ááẠá¡áááá¹áá«ááºáá°áááºá UNIXTIMEUNIX áá±ááºá¡á
ááááºážá á
áá¹ááá·áºá¡áá±á¡ááœááºááᯠááááºážáááºážáá«á (ááááºážáá±á«áẠ(UTC) áá®áááºáᬠ31á 1969 á០1 áá¯ááŸá
Ạáááºááá«áá®á 1970 áááº).
á¡áááºážá¡á á¬áž POSIXlt á¡áá»ááẠááŸáá·áº áááºá áœá² ááŸáá·áº áááºážááá¯á·á á¡á áááºá¡ááá¯ááºáž á¡á¬ážáá¯á¶ážááá¯áááºáž ááááºážáááºážáá¬ážáááºá ááá¯á·ááŒá±á¬áá·áºá áááºážááẠááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬ááœá²á·á ááºážáá¯á¶áá«ááŸááá±á¬ á¡áá¬ááá¹áá¯áá áºáá¯ááŒá áºáá±á¬áºáááºáž áááºááá·áºáááºá áœá²ááŸáá·áºá¡áá»áááºá¡á áááºá¡ááá¯ááºážááá¯áááᯠááá°áááºááœááºáá°áá±á¬ááŒá±á¬áá·áºááŒá áºáááºá ááááºáá±á¬á· POSIXlt á á á¬áááºáž.
# ÐПлÑÑаеЌ ÑекÑÑÑÑ ÐŽÐ°ÑÑ Ðž вÑеЌÑ
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 # ÑаÑПвПй пПÑÑ
ááááºážááá¬ááºážááŸáá·áº á
á¬áá¬ážáá±áá¬ááᯠáá±á¬áºáááºá¡ááŒá
áºááá¯á· ááŒá±á¬ááºážááŒááºážá POSIX* áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŒáá·áº áá±á¬ááºááœááºáááºá as.POSIXct()
О as.POSIXlt()
. á€áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááœáẠá¡ááŒááºážá¡áá¯á¶á¡áá±ážá
á¬ážáá»á¬ážááŸááááºá
- x â áá¶áá«ááºá á á¬ááŒá±á¬ááºáž ááá¯á·ááá¯áẠá¡áááºážá¡á á¬áž á¡áá¬ááá¹áᯠáá±á·á áŸá²ááŒá±á¬ááºážáá²áááºááá¯á¡ááºáá±á¬á
- tz â á¡áá»áááºáá¯ááºá áá°áááºáž "GMT";
- áá±á¬áºááẠâ x á¡ááŒááºážá¡áá¯á¶ááá¯á· áá±áá¬áá±ážááá¯á·ááá·áº áááºá áœá²áá±á¬áºáááºá áá±á¬áºááŒáá»ááºá
- áá°áááºáž - áá¶áá«ááºáá áºáá¯ááᯠPOSIX ááá¯á· ááŒá±á¬ááºážááá·áºá¡áá«ááŸáᬠá¡áá¯á¶ážááŒá¯áááºá áááºááẠá áá¹ááá·áºáá»á¬ážááᯠá€á¡ááŒááºážá¡áá¯á¶ááá¯á· áá±ááœááºááá·áº áááºá áœá²ááŸáá·áº á¡áá»áááºááᯠáááºááŒááºáááºážááá«áááºá á¡áá»á¬ážá¡á¬ážááŒáá·áº UNIXTIME á០áá¬áá¬ááŒááºááẠá¡áá¯á¶ážááŒá¯áááºá
áááºážáá²á·áááºá áœá²áá²á· á¡áá»áááºá¡áá»ááºá¡áááºááœá± áá«áá²á·ááẠUNIXTIMEááá¯á·áá±á¬áẠáááºážááá¯á·ááᯠááŸááºážááŸááºážáááºážáááºáž áááºááá¯ááºáá±á¬ áááºá áœá²á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááẠá¡á±á¬ááºáá« á¥ááá¬ááᯠá¡áá¯á¶ážááŒá¯áá«á
# ÐПМвеÑÑОÑÑеЌ UNIXTIME в ÑОÑаеЌÑÑ ÐŽÐ°ÑÑ
as.POSIXlt(1570084639, origin = "1970-01-01")
áá°áááºážááœáẠáááºááẠáááºááá·áºá¡áá»áááºáá¶ááááºááá¯áááᯠáááºááŸááºááá¯ááºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºáá±áá¬ááœáẠáá±á·áááºááŸáá·áºá¡áá»áááºááẠá ááºáááºáá¬á 15 áááºá 2019 áá¯ááŸá Ạ12:15 áá¬áá®ááŸá á á áá¹ááá·áºá¡áá±á¡ááœááºá¡ááá¯ááºáž áá«áááºáá«áá áááºážááᯠáááºá áœá²á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²áááº-
# ÐПМвеÑÑОÑÑеЌ UNIXTIME в ЎаÑÑ ÑÑОÑÑÐ²Ð°Ñ ÑÑП МаÑалП ПÑÑÑÑÑа 15 ÑеМÑÑбÑÑ 2019 12:15
as.POSIXlt(1546123, origin = "2019-09-15 12:15:00")
áá»á±á¬áá®á¡áá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áááºá áœá²áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºááŒááºážá
lubridate
R áá¬áá¬á
áá¬ážááŒáá·áº áááºá
áœá²áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáááºá¡ááœáẠáá±áááºážá¡á
á¬ážáá¯á¶áž áááºáá±á·áá»áº ááŒá
áºááá¯ááºáááºá áááºážááẠááá·áºá¡á¬áž áá±á¬ááºááẠá¡áááºážáá¯á¶ážáá»áá¯áž áá±ážáááºá
- ááŒá¬áá»ááẠâ ááŒá¬áá»áááºá ááá¯ááá¯áááºááŸá¬á á¡áá»áááºáá¶ááááºááŸá áºáá¯á¡ááŒá¬áž á áá¹ááá·áºá¡áá±á¡ááœááºá
- áá¬ááá»á¬áž - á¡áá»áááºáá¬ááá»á¬ážááẠááá·áºá¡á¬áž áá°áá¬ážáááºááá¯ááºáá±á¬ ááŒá¬ážáá¬ááá»á¬ážááœáẠáááºá áœá²áá»á¬ážá¡ááŒá¬áž ááœááºáá»ááºááŸá¯áá»á¬ážááᯠááŒá¯áá¯ááºááá¯ááºá á±áááº- áááºáá»á¬ážá ááá»á¬ážá áááºááá¹ááááºáá»á¬ážááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬áž;
- ááŒá¬ážáá¬ááá»á¬áž - á¡áá»áááºá¡ááœááºáž á¡á ááŸáá·áºá¡áá¯á¶ážá¡ááŸááºááᯠáá±ážáá±á¬ááºáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážá
R áá¬áá¬á
áá¬ážááœáẠá¡ááá¯áááºáá±á·ááºá»áá»á¬áž áááºáááºááŒááºážááᯠá
á¶áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºáááºá install.packages()
.
á¡áá¯ááºááᯠááá·áºááœááºážááŒááºážá lubridate
:
install.packages("lubridate")
lubricadate ááᯠá¡áá¯á¶ážááŒá¯á á á¬áá¬ážááᯠáááºá áœá²ááá¯á· ááŒá±á¬ááºážáá«á
á¡áá¯ááºáá«ááŸááá«áááºá lubridate
á
á¬áá¬ážááᯠáááºá
áœá²á¡ááŒá
áºááá¯á· ááŒá±á¬ááºážáá²ááŒááºážáá¯ááºáááºážá
ááºááᯠáááá¬áááºááŸá¬ážá
áœá¬ ááá¯ážááŸááºážá
á±ááŒá®áž ááááºážáááºá¹áá»á¬ááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºá
áœá²ááŸáá·áº á¡áá»áááºáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºá
á±áá«áááºá
áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠááá·áºá¡á¬áž áááºááŸááááºá
áœá² ááá¯á·ááá¯áẠáááºá
áœá²ááŸáá·áº á¡áá»áááºááᯠáááŸáááẠáá°áá®áá±ážáá«áááºá today()
О now()
.
today() # ÑекÑÑÐ°Ñ ÐŽÐ°Ñа
now() # ÑекÑÑÐ°Ñ ÐŽÐ°Ñа О вÑеЌÑ
á
á¬ááŒá±á¬ááºážáá
áºáá¯á¡á¬áž áááºá
áœá²áá
áºáá¯ááá¯á· ááŒá±á¬ááºážááẠlubridate
á¡áááºáá»á¬ážááẠá
á¬áá¯á¶ážáá¯á¶ážáá¯á¶áž á¡ááŒá²áá«áááºááŒá®áž áááºá
áœá²á¡á
áááºá¡ááá¯ááºážáá»á¬áž á á¡á
á®á¡á
á¥áºááᯠááœáŸááºááŒááá·áº áá¯ááºáá±á¬ááºáá»áẠáááá¬ážá
á¯áá
áºá
á¯áá¯á¶áž ááŸááá«áááºá
- y - áá áºááŸá áº
- m - áá áºá
- á - áá±á·
áá»á±á¬áá®ááááºááŸáááá·áº á á¬áá¬ážá០áááºá áœá²ááá¯á· ááŒá±á¬ááºážááẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¬áááºáž
ymd()
ydm()
mdy()
myd()
dmy()
dym()
yq()
ááŒáá¯ážáá»á¬ážááᯠáááºá áœá²áá»á¬ážá¡ááŒá áºááá¯á· ááŒá±á¬ááºážááŒááºážá¡ááœáẠá¥ááá¬á¡áá»áá¯á·
ymd("2017 jan 21")
mdy("March 20th, 2019")
dmy("1st april of 2018")
áááºááŒááºáááºá·á¡ááá¯ááºáž lubridate
áááºážááẠáááºá
áœá²áá±á¬áºááŒáá»ááºáá»á¬ážááᯠá
á¬áá¬ážá¡ááŒá
Ạá¡ááá¡ááŸááºááŒá¯áá¬ááœáẠááá¯ááá¯áááá±á¬ááºááŒá®áž áá±á¬áºáááºáá±á¬áºááŒááẠá¡ááá¯á¡á±á¬áºááá±áá¬áá»á¬ážááᯠááá¯á¶ážáá² á
á¬áá¬ážá¡ááŒá
Ạáááºá
áœá²ááá¯á· ááŒá±á¬ááºážááá¯ááºá
á±áááºááŒá
áºáááºá
áá»á±á¬áá®á¡áá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áááºá áœá²á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá¯ááºáá°ááŒááºážá
áááºážáá¯á¶ážáááºá lubridate
áááºá
áœá²áá
áºáá¯á០áááºááá·áºá¡á
áááºá¡ááá¯ááºážááá¯áááᯠáááºáááá¯ááºáááº-
dt <- ymd("2017 jan 21")
year(dt) # гПЎ
month(dt) # ЌеÑÑÑ
mday(dt) # ÐŽÐµÐœÑ Ð² ЌеÑÑÑе
yday(dt) # ÐŽÐµÐœÑ Ð² гПЎÑ
wday(dt) # ÐŽÐµÐœÑ ÐœÐµÐŽÐµÐ»Ðž
áááºá áœá²áá»á¬ážááŒáá·áº ááááºážáááºá¹áá»á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž
áá«áá±ááá·áº á¡áá±ážááŒá®ážáá¯á¶ážáá²á· á¡ááŒá±áá¶áá¯ááºáá±á¬ááºáá»ááºááœá±áá«á lubridate
áááºá
áœá²áá»á¬ážááŒáá·áº á¡áá»áá¯ážáá»áá¯ážáá±á¬ ááááºážáááºá¹áá»á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááŸá¯ááŒá
áºáááºá
áááºá áœá²ááŸáá·áºááŒááºážááᯠáá¯ááºáá±á¬ááºáá»ááºáá¯á¶ážáá¯ááŒáá·áº áá¯ááºáá±á¬ááºáááº-
floor_date
- á¡áá®ážáá¯á¶ážá¡ááááºáá¬áááá¯á·ááŸáá·áºááŒááºážáceiling_date
- ááá±ážáá±á¬á·áá±á¬á¡áá¬áááºáá¬áááá¯á·ááŸáá·áºáááºááŒááºážáround_date
- á¡áá®ážáá¯á¶ážá¡áá»áááºááá¯á·ááŸáá·áºáá«á
á€áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á á®ááœáẠá¡ááŒá±á¬ááºážááŒáá»ááºáá áºáá¯á á®ááŸááááºá áá°áá áºá¡ááá¯ááºážáá°áá áºááᯠáááºááŸááºááœáá·áºááŒá¯áááº- áá¯áááá áááá áºá áá¬áá®á áá±á·á á¡áááºá áá ááŸá áºáá áá±ážááááºá áá¬áá®á áá áºááŸá áºááœá²á ááŸá áº
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") # ПкÑÑглОÑÑ ÐŽÐŸ пПлÑгПЎОÑ
ááá¯á·ááŒá±á¬áá·áº áááºááŸááááºá áœá²ááŒá®ážáá±á¬áẠ8 áááºááŒá±á¬ááºáá±á¬ áááºá áœá²áá áºáá¯ááᯠáááºááá¯á·áááŸáááá¯ááºáááºáááºáž ááŸáá·áº áááºá áœá²ááŸá áºáá¯ááŒá¬ážááŸá á¡ááŒá¬ážááááºážáááºá¹áá»á¬ááœááºáá»ááºááŸá¯á¡áá»áá¯ážáá»áá¯ážááᯠááŒá¯áá¯ááºááŒáá«á áá¯á·á
today() + days(8) # ÐºÐ°ÐºÐ°Ñ ÐŽÐ°Ñа бÑÐŽÐµÑ ÑеÑез 8 ЎМей
today() - months(2) # ÐºÐ°ÐºÐ°Ñ ÐŽÐ°Ñа бÑла 2 ЌеÑÑÑа МазаЎ
today() + weeks(12) # ÐºÐ°ÐºÐ°Ñ ÐŽÐ°Ñа бÑÐŽÐµÑ ÑеÑез 12 МеЎелÑ
today() - years(2) # ÐºÐ°ÐºÐ°Ñ ÐŽÐ°Ñа бÑла 2 гПЎа МазаЎ
áá¬ááá»á¬ážá timeperiodsR áááºáá±á·áá»áºááŒáá·áº ááá¯ážááŸááºážáá±á¬ á¡áá¯ááºá
timeperiodsR
- 2019 áá¯ááŸá
Ạá
ááºáááºáá¬áááœáẠCRAN ááœáẠáá¯ááºáá±áá²á·ááá·áº áááºá
áœá²áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáááºá¡ááœáẠá¡áá
áºáá±á¬ áááºáá±á·ááºá»á
á¡áá¯ááºááᯠááá·áºááœááºážááŒááºážá timeperiodsR
:
install.packages("timeperiodsR")
á¡ááááááºááœááºáá»ááºááŸá¬ áááºááŸááºáá¬ážáá±á¬ áááºá áœá²ááŸáá·áº áááºáááºááá·áº á¡áá»áááºáá¬ááá áºáá¯á¡á¬áž á¡ááŒááºáá¯á¶ážááŒááºáááºááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºážááá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºááẠá¡ááœááºááá° ááŒá¯áá¯ááºááá¯ááºáááº-
- R ááŒáá·áº ááœááºáá²á·áá±á¬ áááºááá¹ááááºá áá áá±ážáá¯á¶áá áºáá¯á¶ ááá¯á·ááá¯áẠáá áºááŸá áºááᯠááá°áá«á
- á¥ááá¬á¡á¬ážááŒáá·áº ááœááºáá²á·áá±á¬ 4 áááºá áááºá áœá²áá áºáá¯ááŸáá·áº áááºá ááºáá±á¬ áááºááŸááºáá¬ážáá±á¬ á¡áá»áááºáá¬áá¡ááá¯ááºážá¡ááŒá¬ážáá áºáá¯ááᯠááá°áá«á
- áááºážá á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠááááºá¡áá»áááºááŒá¬ážáá¬áá០áá¯ááºáá°ááẠááœááºáá°áááº- á¡á ááŸáá·áº á¡áá¯á¶ážáááºá áœá²á ááŒá¬ážáá¬áááœáẠáá«áááºáá±á¬ áááºá¡áá±á¡ááœááºá áááºážááœáẠáá«áááºáá±á¬ áááºá áœá²áá»á¬ážá á¡á á®á¡á á¥áºáá áºáá¯áá¯á¶ážááᯠáá¯ááºáá°ááẠááœááºáá°áááºá
áááºáá±á·áá»áºáá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážáá¡ááẠtimeperiodsR
á¡ááá¯ááá¯ááááá¯ááºááŒá®áž á¡ááá¯ááºážááŸá
áºááá¯ááºážáá«áááºáááº- áŠáž áááºáá»ááº_ááŒá¬ážáá¬áá¡áááºááŸá¬:
- áŠáž áááºáá»áẠáá±ážáá¬ážáá±á¬ áááºá áœá²áá áºáá¯ááá¯á· ááœá±áá»áá¯ážááœáŸá±á·ááẠááá¯á¡ááºáááº- last_ná ááááºá á€á áá±á¬ááºá next_ná
- áá¬áá® ááŒá¬ážáá¬á áá¬áááá¯ááœááºáá»ááºáááº- áá±á·á á¡áááºá áá áá¯á¶ážááááºá ááŸá áºá
áá¯ááºáá±á¬ááºáá»ááºá¡á á¯á¶á¡áááº-
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()
timeperiodsR ááŸá á¡áá»áááºáá¬ááá»á¬áž
ááœááºáá²á·ááá·áº áááºááá¹áááẠááá¯á·ááá¯áẠáá០á¡áá»ááºá¡áááºáá»á¬ážá¡áá±á«áºá¡ááŒá±áá¶á á¡á
á®áááºáá¶á
á¬áá»á¬ážáááºáá±á¬ááºááẠááá¯á¡ááºááá·áºááá
á¹á
áá»á¬ážááœáẠá€áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠá¡áá¯á¶ážáááºáá«áááºá áá±á¬ááºáá¯á¶ážáááá¯ááá°áááºá á¡áá¬ážáá°á¡áááºááá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯áá«á previous_month()
:
prmonth <- previous_month()
á¡á²áá®áá±á¬áẠáááºážááŸá¬ á¡áá¬ááá¹áá¯áá áºáᯠááŸááááá·áºáááºá áá áẠклаÑÑа tprá¡á±á¬ááºáá« á¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠá¡ááœááºááá° ááá°ááá¯ááºáá«áááºá
- áá»áœááºá¯ááºááá¯á·áááá°áá¬ááœáẠá€áá¬áááẠáá±á¬ááºáá¯á¶ážáááŒá áºáááºá
- áá¬ááá¯ááºáá¯á¶ážáááºá áœá²
- áá¬áááœááºáá«áááºááá·áºáááºá¡áá±á¡ááœááº
- áá¬áá¡ááá¯ááºážá¡ááŒá¬ážááœááºáá«áááºáá±á¬ áááºá áœá²áá»á¬áž
ááá¯á·á¡ááŒááºá áááºááẠá¡á áááºá¡ááá¯ááºážáá áºáá¯á á®ááᯠááá°áá®áá±á¬áááºážáááºážáá»á¬ážááŒáá·áº ááá°ááá¯ááºáááºá
# пеÑвÑй ÐŽÐµÐœÑ Ð¿ÐµÑОПЎа
prmonth$start
start(prmonth)
# пПÑлеЎМОй ÐŽÐµÐœÑ Ð¿ÐµÑОПЎа
prmonth$end
end(prmonth)
# пПÑлеЎПваÑелÑМПÑÑÑ ÐŽÐ°Ñ
prmonth$sequence
seq(prmonth)
# кПлОÑеÑÑвП ЎМей вÑ
ПЎÑÑОÑ
в пеÑОПЎ
prmonth$length
length(prmonth)
á¡ááŒááºážá¡áá¯á¶ááᯠá¡áá¯á¶ážááŒá¯á á¡á áááºá¡ááá¯ááºážáá»á¬ážá¡á¬ážáá¯á¶ážááá¯áááºáž áááºáááá¯ááºáááºá á¡ááá¯ááºážáááºáá±á·áá»áºáá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á á®ááœááºáá«ááŸááááºá ááŒá áºááá¯ááºááá·áºáááºááá¯ážáá»á¬áž- á¡á á á¡áá¯á¶ážá á¡á á®á¡á á¥áºá á¡ááŸááºá
previous_month(part = "start") # МаÑалП пеÑОПЎа
previous_month(part = "end") # ÐºÐŸÐœÐµÑ Ð¿ÐµÑОПЎа
previous_month(part = "sequence") # пПÑлеЎПваÑелÑМПÑÑÑ ÐŽÐ°Ñ
previous_month(part = "length") # кПлОÑеÑÑвП ЎМей в пеÑОПЎе
áá«ááŒá±á¬áá·áº package functions ááœá±ááŸá¬ááŸááá²á· arguments á¡á¬ážáá¯á¶ážááᯠááŒáá·áºáá¡á±á¬áẠtimeperiodsR
:
x
- á¡áá»áááºáá¬áááᯠááœááºáá»ááºááá·áº áááºááœáŸááºážáááºá áœá²á áá¯á¶ááŸááºá¡á¬ážááŒáá·áº áááºááŸááááºá áœá²án
- á¥ááá¬- áááẠ3 áááºáá¬áááœáẠáá«áááºááá·áº ááŒá¬ážáá¬á á¡áá±á¡ááœááºápart
- á¡áá¬ááá¹áá¯á áááºááá·áºá¡á áááºá¡ááá¯ááºážtpr
áá°áááºážá¡ááá¯ááºáž áááºááá°áááºááá¯á¡ááºáááºáall
;week_start
â á¡ááŒá±á¬ááºážááŒáá»ááºááẠáááºááá¹ááááºáá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáááºá¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááœááºáᬠááŸááá±ááŒá®áž áááºážááᯠá áááºáááºáᯠáá°ááááá·áº áááºááá¹ááááºááá±á·á¡áá±á¡ááœááºááᯠáááºááŸááºááœáá·áºááŒá¯áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áº á¡áááºáá¡á ááẠááááºá¹áá¬áá±á·ááŒá áºáááºá ááá¯á·áá±á¬áº áááºááá·áºáá±áá¬ááŸáááᯠáááºááŸááºááá¯ááºáááºá 1 - ááááºá¹áá¬á០7 - ááááºá¹áááœá±á
ááá¯á·ááŒá±á¬áá·áºá áááºááẠáááºááŸá ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±ážáá¬ážááá·áº áááºá áœá²ááŸáá·áº áááºáááºááá·áº áááºááá·áºá¡áá»áááºáá¬áááá¯áááᯠááœááºáá»ááºááá¯ááºáááºá á€ááœáẠáá±á¬ááºááẠá¥ááá¬á¡áááºážáááºááŸááá«áááºá
# пПлÑÑОÑÑ 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
á¡á±á¬ááºááá¯áᬠá ááẠááááºá¹áááœá±áá±á·
á¡á±á¬ááºááá¯áá¬á 6 áááºááŸáá·áº ááŸáá¯ááºážááŸááºáá«á áááẠ3 áááºááŒá¬ááá·áº áá¬ááá áºáᯠááá¯á¡ááºáá«áááºá á¡á±á¬ááºááá¯áᬠá ááẠá¡áá«á¡ááẠáááºááá¹ááááºáá»á¬áž ááá«áááºáá«á ááá¯á·ááŒá±á¬áá·áº ááá¯áá¬áááẠá ááºáááºáᬠá áááºá០á ááºáááºáᬠáá áááºá¡ááááŒá áºáááºá
# пПлÑÑОÑÑ ÐŒÐµÑÑÑ ÐŸÑÑÑаÑÑОй Ма 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
á€á¥ááá¬ááœááºá 4 áá¯ááŸá Ạá ááºáááºáá¬á 16 áááºá០á áááºáá«áá 2019 áá¯ááŸá Ạáá±á ááŒá áºááẠá
timeperiodsR ááᯠá¡áá¯á¶ážááŒá¯á áááºá áœá²áá»á¬ážá vector ááᯠá á áºáá¯ááºááŒááºážá
áááºá
áœá²áá»á¬ážááᯠá
á
áºáá¯ááºááẠtimeperiodsR
á¡á±á¬áºááá±áá¬áá»á¬ážá
áœá¬ááŸááááº-
- %left_out% - tpr á¡áááºážá¡á á¬áž á¡áá¬ááá¹áá¯ááŸá áºáá¯ááᯠááŸáá¯ááºážááŸááºááŒá®áž áá¬áááºááœáẠáá»á±á¬ááºáá¯á¶ážáá±áá±á¬ áááºáááºá០áááºááá¯ážááᯠááŒááºáá±ážáááºá
- %left_in% - tpr á¡áááºážá á¡áá¬ááá¹áá¯ááŸá áºáá¯ááᯠááŸáá¯ááºážááŸááºááŒá®áž áá¬áááºááœáẠáá«áááºáá±á¬ áááºáááºá¡áá¬á០áááºá áœá²áá»á¬ážááᯠááŒááºáá±ážáááºá
- %right_out% - tpr á¡áááºážá¡á á¬áž á¡áá¬ááá¹áá¯ááŸá áºáá¯ááᯠááŸáá¯ááºážááŸááºááŒá®áž áááºáááºá០áá»á±á¬ááºáá¯á¶ážáá±áá±á¬ áá¬áááºá០áááºááá¯ážááᯠááŒááºáá±ážáááºá
- %right_in% - tpr á¡áááºážá á¡áá¬ááŸá áºáá¯ááᯠááŸáá¯ááºážááŸááºááŒá®áž áááºáááºááœááºááŸááá±á¬ áá¬áááºááŸá á¡áá¬ááá¹áá¯á០áááºá áœá²áá»á¬ážááᯠááŒááºáá±ážáááºá
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
á¡áá¯ááºááŸá¬ timeperiodsR
áá¯ááŸá¬ážáá¬áá¬ááŒáá·áº ááá¬ážáááºá
á¬áá
áºáá¯ááŸááááºá
áá±á¬ááºáá»ááº
áááºá
áœá²áá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºáááºá¡ááœáẠR áá¬áá¬á
áá¬ážááŒáá·áº áá®ááá¯ááºážáá¯ááºáá¬ážááá·áº á¡áá¬ááá¹áá¯áá»á¬ážá á¡áááºážá¡á
á¬ážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· á¡áá±ážá
ááẠá
á
áºáá±ážáá²á·áá«áááºá ááá¯áááºáž áááºááẠáááºá
áœá²áá»á¬ážáá±á«áºááœáẠááááºážáááºá¹áá»á¬áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá¯ááºáá±á¬ááºááá¯ááºááŒá®áž áááºáá±á·áá»áºááᯠá¡áá¯á¶ážááŒá¯á áááºááá·áºá¡áá»áááºáá¬ááá»á¬ážááá¯áááᯠáá»ááºááŒááºá
áœá¬ ááá°ááá¯ááºáá«áááºá timeperiodsR
.
R áá¬áá¬á
áá¬ážááᯠá
áááºáááºá
á¬ážáááºááá¯ááẠáá»áœááºáá±á¬á·áºáá²á· áááºáá®ááááºáá»ááºáááºááᯠá
á¬áááºážááœááºážááá¯á· ááááºáá±á«áºáá«áááºá
source: www.habr.com