lubridate in R
※ 날짜 데이터 핸들링 패키지: lubridate
- 날짜와 시간 데이터를 핸들링할 수 있는 패키지
■ R 기본 내장함수
- as.Date()함수는 기본적인 형식에 맞춰야 하는 불편함이 있음
- 반드시 ‘/’ 또는 ‘-‘로 구분되어야 함
- 년월일 순으로 년도는 4자리여야 함
> as.Date()
> as.Date('2024-04-01')
> as.Date('2024/04/01')
> as.Date('2024/4/1')
> as.Date('2024/4/01')
> as.Date('2024/04/1')
■ lubridate
- 년(y), 월(m), 일(d)에 따라 적으면 됨
- ymd() / myd() / mdy() / dmy() / dym() 사용가능
- 출력 결과값은 같음
# 아래 코드는 모두 같은 결과값을 반환함
> ymd('2024-04-01')
> ymd('20240401')
> ymd('240401')
> ymd(240401)
> ymd(24,04,01)
> ymd("24년4월1일")
> ymd("2024년4월1일")
> ymd("24 Apr 1st")
> ymd("2024 Apr 1st")
[1] "2024-04-01"
□ 날짜의 년/월/일 추출
> year()
> month()
> day()
□ 날짜 관련된 기타 함수
# 몇 번째 주인지
> week()
# 일요일 ~ 토요일 출력
> wday()
# 요일을 직접 출력 (일~토)
> wday(date, label = T)
> weekdays(date, abbreviate)
# 요일을 직접 출력 (일요일~토요일)
> weekdays(date)
# 일 년 중 몇 번째 날인지
> yday()
□ 날짜 계산
# 년을 더하고 싶을 때
> years()
# 월을 더하고 싶을 때
> months()
# 일을 더하고 싶을 때
> days()
# 두 기간의 차이가 며칠인지
> date1 - date2
# 두 기간의 차이를 년/월/일/시/분/초 단위까지 출력
> as.period(date1 %–% date2)
# 두 기간의 차이를 초 단위로 출력
> as.duration(date1 %–% date2)
□ 윤달
- 윤달이 포함된 년일 경우 T/F 반환
> leap_year()
> lea_year(2005) # FALSE
> lea_year(2008) # TRUE
□ 시간 함수
항상 문자열(“”) 안에 작성 구분자 있어야함 hms / hm / ms 사용가능 시/분/초 단위 출력 :
- parameter
- tz : 타임존 설정가능 타임존 변경
> hms('20:15:18')
> hms('20,15,18')
> hms('20*15*18')
> hm('20:15')
> ms('20:15')
> ymd_hms('2024-05-02_20:15:10')
> ymd_hm('2024-05-02_20-15')
> ymd_hm('2024-05-02_20-15', tz = 'Asia/Seoul')
# 타임존 변경
> dt1_hm <- hm("~~")
> with_tz(dt1_hm, “Asia/Seoul”)
□ 시간 함수
# 시간을 더하고 싶을 때
> hours()
# 분을 더하고 싶을 때
> minutes()
# 초를 더하고 싶을 때
> seconds()
□ 오전 / 오후
오전/오후인지를 TRUE or FALSE로 반환
> am() # 오전인지 T/F 반환
> pm() # 오후인지 T/F 반환
□ 현재 시간
# 날짜만 반환
> today()
[1] "2024-04-25"
# 현재 생성시간을 년월일 시분초로 반환
> now()
[1] "2024-04-25 19:36:58 KST"
# R 프로그램이 어떤 시간대를 사용하는지
> Sys.timezone()
[1] "Asia/Seoul"
□ 날짜의 올림 / 내림 / 반올림
> dt_hm <- ymd_hm("20240425 18:30")
# 올림
> ceiling_date(dt1_hm, unit="year")
[1] "2025-01-01 UTC"
> ceiling_date(dt1_hm, unit="month")
[1] "2024-05-01 UTC"
> ceiling_date(dt1_hm, unit="day")
[1] "2024-04-26 UTC"
# 내림
> floor_date(dt1_hm, unit="year")
[1] "2024-01-01 UTC"
> floor_date(dt1_hm, unit="month")
[1] "2024-04-01 UTC"
> floor_date(dt1_hm, unit="minute")
[1] "2024-04-25 18:30:00 UTC"
# 반올림
> round_date(dt1_hm, unit = "year")
[1] "2024-01-01 UTC"
> round_date(dt1_hm, unit = "month")
[1] "2024-05-01 UTC"
> round_date(dt1_hm, unit = "day")
[1] "2024-04-26 UTC"
댓글남기기