Chapter 4 Date
날짜, 시간에 관련된 데이터는 R의 기본함수 및 lubridate
패키지를 이용해 쉽게 다룰 수 있습니다.
4.1 현재 날짜 및 시간
Sys.timezone()
## [1] "Asia/Seoul"
Sys.Date()
## [1] "2021-09-12"
Sys.time()
## [1] "2021-09-12 18:18:20 KST"
기본 함수를 통해 현재 타임존 및 날짜, 시간을 확인할 수 있습니다.
4.2 문자열을 날짜로 변경하기
= c('2015-07-01', '2015-08-01', '2015-09-01')
x = as.Date(x)
x_date str(x_date)
## Date[1:3], format: "2015-07-01" "2015-08-01" "2015-09-01"
as.Date()
함수를 이용할 경우, 문자열 형태가 Date로 변경됩니다.
= c('07/01/2015', '08/01/2015', '09/01/2015')
y as.Date(y, format = '%m/%d/%Y')
## [1] "2015-07-01" "2015-08-01" "2015-09-01"
YYYY-MM-DD 형태가 아닌 다른 형태로 입력된 경우, format을 직접 입력하여 Date 형태로 변경할 수 있습니다.
library(lubridate)
ymd(x)
## [1] "2015-07-01" "2015-08-01" "2015-09-01"
mdy(y)
## [1] "2015-07-01" "2015-08-01" "2015-09-01"
lubridate
패키지를 이용할 경우 YYYY-MM-DD 형태는 ymd()
, MM-DD-YYYY 형태는 mdy()
함수를 사용해 손쉽게 Date 형태로 변경할 수 있습니다. 이 외에도 lubridate에는 Date 형태로 변경하기 위한 다양한 함수가 존재합니다.
순서 | 함수 |
---|---|
year, month, day | ymd() |
year, day, month | ydm() |
month, day, year | mdy() |
day, month, year | dmy() |
hour, minute | hm() |
hour, minute, second | hms() |
year, month, day, hour, minute, secod | ymd_hms() |
4.3 날짜 관련 정보 추출
lubridate
패키지에는 날짜 관련 정보를 추출할 수 있는 다양한 함수가 존재합니다.
정보 | 함수 |
---|---|
Year | year() |
Month | month() |
Week | week() |
Day of year | yday() |
Day of month | mday() |
Day of week | wday() |
Hour | hour() |
Minute | minute() |
Second | second() |
Time zone | tz() |
= c('2015-07-01', '2015-08-01', '2015-09-01') x
year(x)
## [1] 2015 2015 2015
month(x)
## [1] 7 8 9
week(x)
## [1] 26 31 35
year()
, month()
, week()
함수를 통해 년도, 월, 주 정보를 확인할 수 있습니다.
= '2015-09-15' z
yday(z)
## [1] 258
mday(z)
## [1] 15
wday(z)
## [1] 3
yday()
, mday()
, wday()
함수는 각각 해당 년도에서 몇번째 일인지, 해당 월에서 몇번째 일인지, 해당 주에서 몇번째 일인지를 계산합니다.
= ymd('2015-07-01', '2015-08-01', '2015-09-01')
x + years(1) - days(c(2, 9, 21)) x
## [1] "2016-06-29" "2016-07-23" "2016-08-11"
날짜에서 년도와 월, 일자를 더하거나 빼는 계산 역시 가능합니다.
4.4 날짜 순서 생성하기
seq()
함수를 이용할 경우 날짜 벡터를 생성할 수도 있습니다.
seq(ymd('2010-01-01'), ymd('2015-01-01'), by ='years')
## [1] "2010-01-01" "2011-01-01" "2012-01-01" "2013-01-01" "2014-01-01"
## [6] "2015-01-01"
2010년 1월 1일부터 2015년 1월 1일까지 1년을 기준으로 벡터가 생성됩니다.
seq(ymd('2010-09-01'), ymd('2010-09-30'), by ='2 days')
## [1] "2010-09-01" "2010-09-03" "2010-09-05" "2010-09-07" "2010-09-09"
## [6] "2010-09-11" "2010-09-13" "2010-09-15" "2010-09-17" "2010-09-19"
## [11] "2010-09-21" "2010-09-23" "2010-09-25" "2010-09-27" "2010-09-29"
지정 일수만큼 벡터를 생성할 수도 있습니다.