12.4 날짜 데이터

R에서의 날짜는 1970-01-01 이후의 일 수로 표시되며 이전 날짜는 음수 값으로 처리합니다.

# as.Date( ) 함수는 문자열 날짜를 날짜형 날짜로 변경합니다.
date <- c("2007-06-22", "2004-02-13")              # 문자형 벡터입니다.
mydates <- as.Date(date)                               # 날짜형 Date형 벡터입니다.
mydates
## [1] "2007-06-22" "2004-02-13"
# 2007-6-22과 2004-2-13 사이의 일수는 다음과 같이 계산합니다.
days <- mydates[1] - mydates[2]                    # 날짜형 데이터는 산술연산이 가능합니다.
days
## Time difference of 1225 days

한편, Sys.Date( ) 함수는 오늘 날짜를 반환합니다. 그리고 date() 함수는 현재의 날짜와 시간을 반환합니다.

12.4.1 날짜 형식의 지정

다음의 기호들은 문자형 벡터를 날짜형으로 변경할 때, as.Date() 함수의 format = “”인수로 사용할 수 있습니다. 또는 format() 함수를 이용하여 날짜형 데이터를 출력할 때 출력형식을 지정할 수도 있습니다.

기호 의미
%d 숫자형 날짜 (0-31) 01-31
%a %A 소문자 : 축약된 요일명, 대문자 : 완전한 요일명 Mon Monday
%m 월 (00-12) 00-12
%b %B 소문자 : 축약된 월이름, 대문자 : 완전한 월이름 Jan January
%y %Y 소문자 : 2 자리 연도, 대문자 : 4자리 연도 07 2007
  • 날짜형의 경우 help(strptime) 또는 ? strptime 등으로 자세한 내용을 확인할 수 있습니다.

  • 날짜-시간형의 경우는 help(ISOdatetime)로 자세한 내용을 확인할 수 있습니다.

예를 들면 다음과 같습니다.

# 문자형 벡터를 날짜형 벡터로 변경할 때 사용할 수 있습니다.
dates <- c("2020 01 03", "2020 03 05", "2021 01 24")
my.dates <- as.Date(dates, format = "%Y %m %d")   # dates 요소에 저장된 형식을 지정해 줍니다.ㄴ
my.dates                                          # 2020-01-03, 2020-03-05, 2021-01-24와 같은 기본적인 날짜 형식으로 출력이 됩니다.
## [1] "2020-01-03" "2020-03-05" "2021-01-24"
# 오늘 날짜의 출력형식을 지정할 수 있습니다.
today <- Sys.Date()                                # 오늘 날짜를 today 변수에 할당합니다.
format(today, format="%Y년 %m월 %d일")              # "2021년 1월 31일"의 형식으로 출력합니다.
## [1] "2021년 02월 08일"

12.4.2 날짜형 변환

12.4.2.1 문자형을 날짜형으로

You can use the as.Date( ) function to convert character data to dates. The format is as.Date(x, “format”), where x is the character data and format gives the appropriate format.

앞의 예에서 살펴본 바와 같이 as.Date () 함수를 사용하여 문자형 데이터를 날짜형로 변환 할 수 있습니다.

as.Date() 함수의 다음과 같습니다.

as.Date (x, format = “”)

  • x : 문자형 데이터입니다.
  • format : 문자형 데이터에 맞춰, 앞의 표에 있는 기호들을 입력합니다.

다음의 예에서 살펴 보겠습니다.

# 'mm/dd/yyyy' 형식의 문자형 벡터를 날짜형 벡터로 변경합니다.
Dates.Chr <- c("02/25/2015", "08/15/2016")       # 문자형 벡터에 "월/일/년"의 형태로 입력이 되어 있습니다.
my.dates <- as.Date(Dates.Chr, "%m/%d/%Y")       # format 인수에 "%m/%d/%Y"로 맞춰 줍니다.
my.dates                                         # 기본 출력형식인 yyyy-mm-dd 형식으로 출력됩니다.
## [1] "2015-02-25" "2016-08-15"

12.4.2.2 날짜형을 문자형으로

as.character() 함수를 사용하여 날짜형 데이터를 문자형 데이터로 변환할 수 있습니다.

# 문자형 벡터인 my.dates를 날짜형 벡터인 dates로 변경합니다.
dates <- as.character(my.dates)

# format() 함수를 같이 사용하면 다음과 같은 문자형 벡터로 변경할 수 있습니다.
dates <- as.character(format(my.dates, format="%Y년 %m월 %d일"))
dates                                            # "2015년 2월 25일", "2016년 8월 15일"
## [1] "2015년 02월 25일" "2016년 08월 15일"