[R데이터분석] 날짜와 시간 관련함수(package: lubridate)
날짜와 시간
year(), month(, label=), day(), wday(, label=), hour(), minute(), second()
오늘 날짜
Sys.Date()
[1] "2022-04-27”
현재 시간
Sys.time()
[1] "2022-04-27 16:56:32 KST”
미국식 시간
date( )
[1] "Wed Apr 27 16:57:12 2022”
문자→날짜 강제 변환하기
as.Date('2014-11-01')
#문자인 “2014-11-01”을 날짜형식으로 as.date [1] "2014-11-01"
as.Date("2014/11/01")
#문자인 "2014/11/01"을 날짜형식으로 [1] "2014-11-01"
날짜형태 지정하기
as.Date() 함수는 날짜형식으로 변경해주며
어떤 형태로 입력해도 네자리 0000-00-00 형식으로 나옴
[1] "2014-11-01” 추출방법 3가지
as.Date("01-11-2014", format="%d-%m-%Y")
[1] "2014-11-01"
as.Date("2014년 11월 1일", format="%Y년 %m월 %d일")
[1] "2014-11-01"
as.Date("01112014", format="%d%m%Y")
[1] "2014-11-01"
as.Date("011114", format="%d%m%y")
[1] "2014-11-01"
날짜연산
주어진 날짜의 10일 뒤, 10일 전 날짜
as.Date(10,origin="2014-11-10") [1] "2014-11-20" as.Date(-10,origin="2014-11-10") [1] "2014-10-31"
날짜형식으로 as.Date() 한 후 연산
as.Date("2014-11-30") - as.Date("2014-11-01") Time difference of 29 days
일수 더하기
as.Date("2014-11-01") + 5 [1] "2014-11-06"
시간차 구하는 함수
POSIXlt (), POSIXct()
POSIXlt: 날짜를 년,월,일 로 표시하는 리스트형이라는 클래스
POSIXct: 날짜는 연속적인 데이터로 인식해서 1970년을 기준으로 초 단위로 계산
as.Date("2014-11-01 20:00:00") - as.Date("2014-11-01 18:30")
Time difference of 0 days
as.POSIXct("2014-11-01 20:00:00") - as.POSIXct("2014-11-01 18:30:30")
Time difference of 1.491667 hours
날짜와 시간 제어하기: lubridate 패키지로
install.packages("lubridate") library(lubridate)
lubridate 패키지를 깔았으면 아래와 같은 함수 사용이 가능해짐
date <- now( )
#"2022-04-27 17:58:49 KST”
년도만 출력
year(date)
#[1] 2022
월을 출력하되 영문 이름으로 출력
month(date,label=T)
[1] 4
Levels: 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < 11 < 12
월 숫자로 출력
month(date,label=F)
#[1] 4
일 출력하기
day(date)
#[1] 27
요일 출력
wday(date,label=T)
#[1] 수 #Levels: 일 < 월 < 화 < 수 < 목 < 금 < 토
요일을 가중치 숫자로 출력(일요일부터 1로 시작)
wday(date,label=F)
#[1] 4
2일전 날짜 출력
date <- date - days(2)
date
#[1] "2022-04-25 22:21:35 KST”
date+years(1) # 1 년 추가
date+months(1) # 1 개월 추가
date+hours(1) # 1 시간 추가
date+minutes(1) # 1 분 추가
date+seconds(1) #1 초 추가
date <- hm("22:30") ; date # 시간 분 지정하기 [1] "22H 30M 0S"
date <- hms("22:30:15") ; date # 시간 분 초 지정하기 [1] "22H 30M 15S"