ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ํ์ฌ ๋ ์ง๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ "Hello world!"์ ๋์ผํ ์์ ์ ๋๋ค. R ์ธ์ด๋ ์์ธ๋ ์๋๋๋ค.
์ด ๊ธฐ์ฌ์์๋ R ์ธ์ด์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์์ ๋ ์ง ์์ ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด๊ณ ๋ ์ง ์์ ์ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๋ช ๊ฐ์ง ์ ์ฉํ ํจํค์ง๋ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
lubridate
โ ๋ ์ง ๊ฐ ์ฐ์ ๊ณ์ฐ์ ์ํํ ์ ์๋ ํจํค์ง์ ๋๋ค.timeperiodsR
โ ์๊ฐ ๊ฐ๊ฒฉ ๋ฐ ํด๋น ๊ตฌ์ฑ ์์๋ฅผ ๋ค๋ฃจ๋ ํจํค์ง์ ๋๋ค.
๋ด์ฉ
๋ฐ์ดํฐ ๋ถ์, ํนํ R ์ธ์ด์ ๊ด์ฌ์ด ์๋ค๋ฉด ๋ด ๊ธ์ ๊ด์ฌ์ด ์์ ๊ฒ์
๋๋ค.
๊ธฐ๋ณธ R ๊ตฌ๋ฌธ์ ๋ ์ง ์์
1.1.ํ ์คํธ๋ฅผ ๋ ์ง๋ก ๋ณํ
1.2.๊ธฐ๋ณธ R์์ ๋ ์ง ๊ตฌ์ฑ ์์ ์ถ์ถ lubridate ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ์์
2.1.lubridate๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ๋ ์ง๋ก ๋ณํ
2.2.lubridate ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ๊ตฌ์ฑ ์์ ์ถ์ถ
2.3.๋ ์ง๋ฅผ ์ฌ์ฉํ ์ฐ์ ์ฐ์ฐ ๊ธฐ๊ฐ, ๊ธฐ๊ฐ, R ํจํค์ง๋ฅผ ์ฌ์ฉํ ๋จ์ํ๋ ์์
3.1.๊ธฐ๊ฐR์ ์๊ฐ ๊ฐ๊ฒฉ
3.2.timePeriodsR์ ์ฌ์ฉํ์ฌ ๋ ์ง ๋ฒกํฐ ํํฐ๋ง ๊ฒฐ๋ก
๊ธฐ๋ณธ R ๊ตฌ๋ฌธ์ ๋ ์ง ์์
ํ ์คํธ๋ฅผ ๋ ์ง๋ก ๋ณํ
๊ธฐ๋ณธ R์๋ ๋ ์ง ์์ ์ ์ํ ์ผ๋ จ์ ํจ์๊ฐ ์์ต๋๋ค. ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ ๋จ์ ์ ํจ์ ์ด๋ฆ๊ณผ ์ธ์์ ๋์๋ฌธ์๊ฐ ๋งค์ฐ ๋ถ์ฐ๋์ด ์๊ณ ์ค์ ๋ก ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ธ์ด์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์์์ผ ํ๋ฏ๋ก ๋จผ์ ์์ํ๊ฒ ์ต๋๋ค.
csv ํ์ผ ๋๋ ๊ธฐํ ์์ค์์ R๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ๋ ๋ ์ง๋ฅผ ํ
์คํธ๋ก ๋ฐ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ๋ง์ต๋๋ค. ์ด ํ
์คํธ๋ฅผ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์ ํ์ผ๋ก ๋ณํํ๋ ค๋ฉด ๋ค์ ํจ์๋ฅผ ์ฌ์ฉํ์ญ์์ค. 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
์์ผ ๋ฒํธ(0-6, ์ฌ๊ธฐ์ 0์ ์ผ์์ผ)
%m
๋ ์๋ฆฌ ์ ์ง์ (01-12)
%b
์ ์ด๋ฆ์ ์ฝ์ด(apr, mar, ...)
%B
์ ์ฒด ์ ์ด๋ฆ
%y
๋ ์๋ฆฌ ์ฐ๋ ์ง์
%Y
XNUMX์๋ฆฌ ์ฐ๋ ์ง์
%j
ํด๋น ์ฐ๋์ ์ผ ์(001 - 366)
%U
ํด๋น ์ฐ๋์ ์ฃผ ๋ฒํธ(00 - 53), ์ฃผ์ ์์ ์ผ์์ผ
%W
ํด๋น ์ฐ๋์ ์ฃผ ๋ฒํธ(00 - 53), ์ฃผ์ ์์ ์์์ผ
๋ฐ๋ผ์ "26๋
2019์ XNUMX์ผ"์ ์, ์ผ, ์ฐ๋์ ์ ์ฒด ์ด๋ฆ์
๋๋ค. ์ด ๋ ์ง ํ์์ ๋ค์๊ณผ ๊ฐ์ด ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ช
ํ ์ ์์ต๋๋ค."%B %d, %Y"
.
์ฅ์ :
%B
โ ๋ฌ์ ์ ์ฒด ์ด๋ฆ%d
โ ํด๋น ์์ ์ผ์%Y
โ XNUMX์๋ฆฌ ์ฐ๋ ์ง์
๋ ์ง ํ์์ ์ค๋ช
ํ ๋ ๋์, ์ผํ, ๋ง์นจํ, ๊ณต๋ฐฑ ๋ฑ๊ณผ ๊ฐ์ ๋ฌธ์์ด์ ๋ชจ๋ ์ถ๊ฐ ๋ฌธ์๋ฅผ ํฌํจํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ด ์์ธ "26๋
2019์ XNUMX์ผ"์์๋ ๋ ์ง ๋ค์ ์ผํ๊ฐ ์๊ณ ํ์ ์ค๋ช
์๋ ์ผํ๋ฅผ ๋ฃ์ด์ผ ํฉ๋๋ค."%B %d, %Y"
.
ํ์ค ํ์๊ณผ ์ผ์นํ์ง ์์ ๋ฟ๋ง ์๋๋ผ ๋ ์ง๋ฅผ ๋ฐ๋ ์ํฉ์ด ์์ต๋๋ค. (YYYY-MM-DD ๋๋ YYYY/MM/DD)์ด์ง๋ง ์ด์ ์ฒด์ ์ ์ค์น๋ ๊ธฐ๋ณธ ์ธ์ด์ ๋ค๋ฅธ ์ธ์ด๋ก๋ ์์ฑ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด '15๋ 2019์ XNUMX์ผ'๊ณผ ๊ฐ์ด ๋ ์ง๊ฐ ํ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ํ์ต๋๋ค. ์ด ๋ฌธ์์ด์ ๋ ์ง๋ก ๋ณํํ๊ธฐ ์ ์ ๋ก์ผ์ผ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
# ะะตะฝัะตะผ ะปะพะบะฐะปั
Sys.setlocale("LC_TIME", "Russian")
# ะะพะฝะฒะตััะธััะตะผ ัััะพะบั ะฒ ะดะฐัั
as.Date("ะะตะบะฐะฑัั 15, 2019 ะณ.", format = "%B %d, %Y")
๊ธฐ๋ณธ R์์ ๋ ์ง ๊ตฌ์ฑ ์์ ์ถ์ถ
๊ธฐ๋ณธ R์๋ ํด๋์ค ๊ฐ์ฒด์์ ๋ ์ง์ ์ผ๋ถ๋ฅผ ์ถ์ถํ ์ ์๋ ํจ์๊ฐ ๋ง์ง ์์ต๋๋ค. ๋ ์ง.
current_date <- Sys.Date() # ัะตะบััะฐั ะดะฐัะฐ
weekdays(current_date) # ะฟะพะปััะธัั ะฝะพะผะตั ะดะฝั ะฝะตะดะตะปะธ
months(current_date) # ะฟะพะปััะธัั ะฝะพะผะตั ะผะตัััะฐ ะฒ ะณะพะดั
quarters(current_date) # ะฟะพะปััะธัั ะฝะพะผะตั ะบะฒะฐััะฐะปะฐ ะฒ ะณะพะดั
์ฃผ์ ๊ฐ์ฒด ํด๋์ค ์ธ์๋ ๋ ์ง ๊ธฐ๋ณธ R์๋ ํ์์คํฌํ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ดํฐ ์ ํ์ด 2๊ฐ ๋ ์์ต๋๋ค. POSIXlt, POSIXct. ์ด ํด๋์ค์ ํด๋์ค์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ ์ง ๋ ์ง ์ธ์ ์๊ฐ๋ ์ ์ฅํ๋ค๋ ๊ฒ์ ๋๋ค.
# ะฟะพะปััะธัั ัะตะบัััั ะดะฐัั ะธ ะฒัะตะผั
current_time <- Sys.time()
# ัะทะฝะฐัั ะบะปะฐัั ะพะฑัะตะบัะฐ current_time
class(current_time)
# "POSIXct" "POSIXt"
๊ธฐ๋ฅ Sys.time()
ํ์ฌ ๋ ์ง์ ์๊ฐ์ ํ์์ผ๋ก ๋ฐํํฉ๋๋ค. POSIXct. ์ด ํ์์ ์๋ฏธ๊ฐ ์ ์ฌํฉ๋๋ค. ์ ๋์คํ์, UNIX ์๋๊ฐ ์์๋ ์ดํ์ ์ด ์๋ฅผ ์ ์ฅํฉ๋๋ค. (31๋
1969์ 1์ผ๋ถํฐ 1970๋
XNUMX์ XNUMX์ผ๊น์ง ์์ (UTC)).
ํด๋์ค 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 ์ธ์์ ์ ๋ฌ๋ ๋ฐ์ดํฐ๊ฐ ํ์๋๋ ๋ ์ง ํ์์ ๋ํ ์ค๋ช ์ ๋๋ค.
- Origin โ ์ซ์๋ฅผ POSIX๋ก ๋ณํํ ๋๋ง ์ฌ์ฉ๋๋ฉฐ, ์ด๊ฐ ๊ณ์ฐ๋๋ ๋ ์ง ๊ฐ์ฒด์ ์๊ฐ์ ์ด ์ธ์์ ์ ๋ฌํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก UNIXTIME์ ๋ณํ์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ ์ง ๋ฐ ์๊ฐ ์ ๋ณด๊ฐ ๋ค์ ์์น์ ์๋ ๊ฒฝ์ฐ ์ ๋์คํ์, ๋ช ํํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ๋ ์ง๋ก ๋ณํํ๋ ค๋ฉด ๋ค์ ์๋ฅผ ์ฌ์ฉํ์ญ์์ค.
# ะะพะฝะฒะตััะธััะตะผ UNIXTIME ะฒ ัะธัะฐะตะผัั ะดะฐัั
as.POSIXlt(1570084639, origin = "1970-01-01")
์๋ณธ์์๋ ์์์ ํ์์คํฌํ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ์ 15๋ 2019์ 12์ผ ์คํ 15์ XNUMX๋ถ ์ดํ์ ์ด ์๋ก ๋ ์ง์ ์๊ฐ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ ์ง๋ก ๋ณํํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์.
# ะะพะฝะฒะตััะธััะตะผ UNIXTIME ะฒ ะดะฐัั ััะธััะฒะฐั ััะพ ะฝะฐัะฐะปะพ ะพัััััะฐ 15 ัะตะฝััะฑัั 2019 12:15
as.POSIXlt(1546123, origin = "2019-09-15 12:15:00")
lubridate ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ง ์์
lubridate
์๋ง๋ R ์ธ์ด์์ ๋ ์ง ์์
์ ์ํ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ํจํค์ง์ผ ๊ฒ์
๋๋ค. ์ด ํจํค์ง๋ ์ธ ๊ฐ์ง ์ถ๊ฐ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๊ธฐ๊ฐ โ ๊ธฐ๊ฐ, ์ฆ ๋ ํ์์คํฌํ ์ฌ์ด์ ์ด ์;
- ๊ธฐ๊ฐ - ๊ธฐ๊ฐ์ ์ฌ์ฉํ๋ฉด ์ฌ๋์ด ์ฝ์ ์ ์๋ ๊ฐ๊ฒฉ(์ผ, ์, ์ฃผ ๋ฑ)์ผ๋ก ๋ ์ง ๊ฐ ๊ณ์ฐ์ ์ํํ ์ ์์ต๋๋ค.
- ๊ฐ๊ฒฉ - ์์ ๋ฐ ์ข ๋ฃ ์์ ์ ์ ๊ณตํ๋ ๊ฐ์ฒด์ ๋๋ค.
R ์ธ์ด์ ์ถ๊ฐ ํจํค์ง ์ค์น๋ ํ์ค ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. install.packages()
.
ํจํค์ง ์ค์น lubridate
:
install.packages("lubridate")
lubridate๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ๋ฅผ ๋ ์ง๋ก ๋ณํ
ํจํค์ง ๊ธฐ๋ฅ lubridate
ํ
์คํธ๋ฅผ ๋ ์ง๋ก ๋ณํํ๋ ๊ณผ์ ์ ํฌ๊ฒ ๋จ์ํํ๊ณ ๋ ์ง ๋ฐ ์๊ฐ์ ์ฌ์ฉํ์ฌ ์ฐ์ ์ฐ์ฐ์ ์ํํ ์๋ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ํ์ฌ ๋ ์ง ๋๋ ๋ ์ง์ ์๊ฐ์ ์ป๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. today()
ะธ now()
.
today() # ัะตะบััะฐั ะดะฐัะฐ
now() # ัะตะบััะฐั ะดะฐัะฐ ะธ ะฒัะตะผั
๋ฌธ์์ด์ ๋ ์ง๋ก ๋ณํํ๋ ค๋ฉด lubridate
์ด๋ฆ์ด ํญ์ ์ธ ๊ธ์๋ก ๊ตฌ์ฑ๋๊ณ ๋ ์ง ๊ตฌ์ฑ ์์์ ์์๋ฅผ ๋ํ๋ด๋ ์ ์ฒด ํจ์ ๊ณ์ด์ด ์์ต๋๋ค.
- y-๋
- m - ์
- d - ์ผ
lubridate๋ฅผ ํตํด ํ ์คํธ๋ฅผ ๋ ์ง๋ก ๋ณํํ๋ ํจ์ ๋ชฉ๋ก
ymd()
ydm()
mdy()
myd()
dmy()
dym()
yq()
๋ฌธ์์ด์ ๋ ์ง๋ก ๋ณํํ๋ ๋ช ๊ฐ์ง ์:
ymd("2017 jan 21")
mdy("March 20th, 2019")
dmy("1st april of 2018")
๋ณด์๋ค์ํผ lubridate
๋ ์ง ์ค๋ช
์ ํ
์คํธ๋ก ์ธ์ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ํจ์จ์ ์ด๋ฉฐ ํ์์ ์ค๋ช
ํ๊ธฐ ์ํด ์ถ๊ฐ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ํ
์คํธ๋ฅผ ๋ ์ง๋ก ๋ณํํ ์ ์์ต๋๋ค.
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 ะณะพะดะฐ ะฝะฐะทะฐะด
๊ธฐ๊ฐ, time periodsR ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๋จ์ํํ์ต๋๋ค.
timeperiodsR
โ 2019๋
XNUMX์ CRAN์ ๊ฒ์๋ ๋ ์ง ์์
์ ์ํ ์๋ก์ด ํจํค์ง์
๋๋ค.
ํจํค์ง ์ค์น timeperiodsR
:
install.packages("timeperiodsR")
์ฃผ์ ๋ชฉ์ ์ ํน์ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ํน์ ์๊ฐ ๊ฐ๊ฒฉ์ ์ ์ํ๊ฒ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ค์์ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
- ์ง๋ ์ฃผ, ์, ๋ถ๊ธฐ ๋๋ ์ฐ๋๋ฅผ R๋ก ๊ฐ์ ธ์ต๋๋ค.
- ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ง์ ๋ ์๊ฐ ๊ฐ๊ฒฉ ์(์: ์ง๋ 4์ฃผ)๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๊ฒฐ๊ณผ ์๊ฐ ๊ฐ๊ฒฉ์์ ์์ ๋ฐ ์ข ๋ฃ ๋ ์ง, ๊ฐ๊ฒฉ์ ํฌํจ๋ ์ผ ์, ํฌํจ๋ ์ ์ฒด ๋ ์ง ์์ ๋ฑ ๊ตฌ์ฑ ์์๋ฅผ ์ฝ๊ฒ ์ถ์ถํ ์ ์์ต๋๋ค.
๋ชจ๋ ํจํค์ง ํจ์์ ์ด๋ฆ timeperiodsR
์ง๊ด์ ์ด๋ฉฐ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ฐฉํฅ_๊ฐ๊ฒฉ, ์ฌ๊ธฐ์ :
- ๋ฐฉํฅ ์ฃผ์ด์ง ๋ ์ง(last_n, Previous, this, next, 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()
๊ธฐ๊ฐR์ ์๊ฐ ๊ฐ๊ฒฉ
์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง๋ ์ฃผ ๋๋ ์ง๋ ๋ฌ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณด๊ณ ์๋ฅผ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค. ์ง๋ ๋ฌ์ ์ป์ผ๋ ค๋ฉด ๊ฐ์ ์ด๋ฆ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ญ์์ค 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") # ะบะพะปะธัะตััะฒะพ ะดะฝะตะน ะฒ ะฟะตัะธะพะดะต
๊ทธ๋ผ ํจํค์ง ํจ์์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ์ธ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. 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์ XNUMX์ผ์ ์ผ์์ผ์
๋๋ค:
6์ 3์ผ์ ๊ธฐ์ค์ผ๋ก ์ด์ 6์ฃผ์ ํด๋นํ๋ ๊ธฐ๊ฐ์ด ํ์ํฉ๋๋ค. 9์ 29์ผ์ด ํฌํจ๋ ์ฃผ๋ ์ ์ธ๋ฉ๋๋ค. ๋ฐ๋ผ์ XNUMX์ XNUMX์ผ๋ถํฐ XNUMX์ XNUMX์ผ๊น์ง์ ๊ธฐ๊ฐ์ด๋ค.
# ะฟะพะปััะธัั ะผะตััั ะพัััะฐััะธะน ะฝะฐ 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์ 2019์ผ๋ถํฐ ์์ํ๋ฉด XNUMX๋ XNUMX์์ด ๋ฉ๋๋ค.
timePeriodsR์ ์ฌ์ฉํ์ฌ ๋ ์ง ๋ฒกํฐ ํํฐ๋ง
๋ ์ง๋ฅผ ํํฐ๋งํ๋ ค๋ฉด 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 ์ธ์ด์ ๊ด์ฌ์ด ์์ผ์๋ฉด ์ ํ
๋ ๊ทธ๋จ ์ฑ๋์ ๊ตฌ๋
ํด ์ฃผ์ธ์.
์ถ์ฒ : habr.com