R์—์„œ ๋‚ ์งœ ์ž‘์—…(๊ธฐ๋ณธ ๊ธฐ๋Šฅ, lubridate ๋ฐ time periodsR ํŒจํ‚ค์ง€)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด๋Š” "Hello world!"์™€ ๋™์ผํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค. R ์–ธ์–ด๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” R ์–ธ์–ด์˜ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์—์„œ ๋‚ ์งœ ์ž‘์—…์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ณ  ๋‚ ์งœ ์ž‘์—… ์‹œ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ํŒจํ‚ค์ง€๋„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • lubridate โ€” ๋‚ ์งœ ๊ฐ„ ์‚ฐ์ˆ  ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.
  • timeperiodsR โ€” ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ ๋ฐ ํ•ด๋‹น ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค๋ฃจ๋Š” ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค.

R์—์„œ ๋‚ ์งœ ์ž‘์—…(๊ธฐ๋ณธ ๊ธฐ๋Šฅ, lubridate ๋ฐ time periodsR ํŒจํ‚ค์ง€)

๋‚ด์šฉ

๋ฐ์ดํ„ฐ ๋ถ„์„, ํŠนํžˆ R ์–ธ์–ด์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋‚ด ๊ธ€์— ๊ด€์‹ฌ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ „๋ณด ะธ ์œ ํŠœ๋ธŒ ์ฑ„๋„. ๋Œ€๋ถ€๋ถ„์˜ ์ฝ˜ํ…์ธ ๋Š” R ์–ธ์–ด์— ์ „๋…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ธฐ๋ณธ R ๊ตฌ๋ฌธ์˜ ๋‚ ์งœ ์ž‘์—…
    1.1. ํ…์ŠคํŠธ๋ฅผ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜
    1.2. ๊ธฐ๋ณธ R์—์„œ ๋‚ ์งœ ๊ตฌ์„ฑ ์š”์†Œ ์ถ”์ถœ
  2. lubridate ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ ์งœ ์ž‘์—…
    2.1. lubridate๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ฅผ ๋‚ ์งœ๋กœ ๋ณ€ํ™˜
    2.2. lubridate ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ ์งœ ๊ตฌ์„ฑ ์š”์†Œ ์ถ”์ถœ
    2.3. ๋‚ ์งœ๋ฅผ ์‚ฌ์šฉํ•œ ์‚ฐ์ˆ  ์—ฐ์‚ฐ
  3. ๊ธฐ๊ฐ„, ๊ธฐ๊ฐ„, R ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•œ ๋‹จ์ˆœํ™”๋œ ์ž‘์—…
    3.1. ๊ธฐ๊ฐ„R์˜ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ
    3.2. timePeriodsR์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ ์งœ ๋ฒกํ„ฐ ํ•„ํ„ฐ๋ง
  4. ๊ฒฐ๋ก 

๊ธฐ๋ณธ 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์ผ์€ ์ผ์š”์ผ์ž…๋‹ˆ๋‹ค:
R์—์„œ ๋‚ ์งœ ์ž‘์—…(๊ธฐ๋ณธ ๊ธฐ๋Šฅ, lubridate ๋ฐ time periodsR ํŒจํ‚ค์ง€)

6์›” 3์ผ์„ ๊ธฐ์ค€์œผ๋กœ ์ด์ „ 6์ฃผ์— ํ•ด๋‹นํ•˜๋Š” ๊ธฐ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 9์›” 29์ผ์ด ํฌํ•จ๋œ ์ฃผ๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ XNUMX์›” XNUMX์ผ๋ถ€ํ„ฐ XNUMX์›” XNUMX์ผ๊นŒ์ง€์˜ ๊ธฐ๊ฐ„์ด๋‹ค.

R์—์„œ ๋‚ ์งœ ์ž‘์—…(๊ธฐ๋ณธ ๊ธฐ๋Šฅ, lubridate ๋ฐ time periodsR ํŒจํ‚ค์ง€)

# ะฟะพะปัƒั‡ะธั‚ัŒ ะผะตััั† ะพั‚ัั‚ะฐัŽั‰ะธะน ะฝะฐ 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 ์–ธ์–ด์— ๊ด€์‹ฌ์ด ์žˆ์œผ์‹œ๋ฉด ์ œ ํ…”๋ ˆ๊ทธ๋žจ ์ฑ„๋„์„ ๊ตฌ๋…ํ•ด ์ฃผ์„ธ์š”. R4๋งˆ์ผ€ํŒ…, ์ผ์ƒ์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด R ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋งค์ผ ์œ ์šฉํ•œ ์ž๋ฃŒ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€