[Data Science With R] 11. Time Data with lubridate (202406)

2023. 4. 8. 20:52·Data Science/Manipulation

1. 티블에서 시간 표현

  • 데이트형 : 날짜형 <date>
  • 타임형 : 시간형 <time>
  • 데이트타임형 : 데이트타임형 <dttm>

 

 

2.  날짜 및 시간 데이터 생성

  • 날짜/시간 생성 
    • 현재 날짜 및 시간 생성 : today(), now() 함수 사용
    • 날짜 및 시간 변환 함수 : as_date, as_datetime 함수 사용 (수치값은 1970-01-01을 기준으로 지난 시간 제공)
today()  # [1] "2024-06-12"
now()    # [1] "2024-06-12 17:13:30 KST"
as_datetime(today())  # [1] "2024-06-12 UTC"
as_date(now())        # [1] "2024-06-12"
as_datetime(24*60*60) # [1] "1970-01-02 UTC"
as_date(365*50)       # [1] "2019-12-20"

 

  • 데이터 로딩 : readr 함수를 사용할때 ISO8601 날짜/시간을 포함하고 있으면 따로 설정 안해도 됨

    (* IS08601 포맷 : 날짜의 구성요소는 "-"로 구분하고, 시간의 구성요소는 ":"로 구분하며, 날짜와 시간 사이에는 공백이나 T를 사용)
    (* 포맷 형식이 다르면 readr 함수 파라미터 col_types 파라미터 사용해해서 format 지정)

%Y 4자리 연도 %d 날짜 %p AM/PM %. 숫자가 아닌 글자 스킵
%y 2자리 연도 %e 날짜(두자리) %M 분 %* 숫자가 아닌 여러 글자 스킵
%m 월(숫자) %H 24시간제 시간 %S 초 시간 포맷 형식
%b(%B) 월(문자) %I 12시간제 시간 %OS 실수 초
csv <- "
  date, datetime
  2022-01-02, 2022-01-02T05:12"
read_csv(csv)

csv <- "
  date
  01/02/15"
read_csv(csv, col_types = cols(date = col_date("%m/%d/%y")))

 

  • 문자열 벡터 : 파싱함수(parse_date, parse_time, parse_datetime) 사용 (format 파라미터 사용)
parse_date("2023+03+25", format = "%Y+%m+%d") # [1] "2023-03-25"
parse_date(c("[John]2023-03-02", 
			 "[Max]2005-12-15"),format = "%*%Y-%m-%d") # [1] "2023-03-02" "2005-12-15"

 

  • 도우미 함수 사용 : y(연도), m(월), d(일), h(시간), m(분), s(초)를 주어진 날짜에 따라 조합하여 사용

    (* ymd, mdy처럼 사용 가능하며 문자형 벡터가 아닌 숫자형 벡터에도 적용이 가능)
    (* 시간을 나타내는 h, hm, hms를 사용하는 경우 날짜를 나타내는 조합과 "_"로 구분)
    • ymd : 년도-월-일 순서로 데이트형 객체로 반환
    • ymd_hm : 년도-월-일 시간:분 순서로 데이트타임형 객체로 반환
ymd("2002-12-25") # 2002-12-25
mdy("12/25/02")   # 2002-12-25
dym("25*&02&*12") # 2002-12-25
ymd_hms("2017-Jan-31 20:11:59") # [1] "2017-01-31 20:11:59 UTC"
mdy_hm("jan/31/2017T08:01")     # [1] "2017-01-31 08:01:00 UTC"

 

  • 개별 구성요소에서 생성 : 데이트(타임)형의 구성요소들이 여러 열에 걸쳐 있는 경우 make_date( ), make_datetime( ) 함수 사용

개별 구성 요소가 열에 흩어져 있을 때(좌), make_datetime 함수를 적용한 모습(우)

 

 

3. 데이트(타임)형 구성요소

앞에서 여러가지 방법으로 변환한 데이트(타임)형 객체에서 다양한 구성요소를 추출할 수 있습니다.

year 연도(年度) 반환 hour 시간 반환
month 월(月) 반환 minute 분 반환
day 일(日) 반환 (= mday 함수) second 초 반환
wday 한주에서 며칠인지 반환
(일요일 : 1 ~ 토요일 : 7 )
yday 해당 년도에서 며칠이 지났는지 반환

 

  • month, wday 함수에서 label=T로 설정하면 로캘(locale)에 따른 월과 일의 약식이름을 반환하며 abbr=F인 경우 전체 이름 반환
  • 반올림함수 : floor_date, round_date, ceiling_date
    (반올림하는 단위를 unit 파라미터로 설정할 수 있으며 second, minute, hour, day, week, month, bimonth, quarter, season, halfyear and year 등을 지정할 수 있다)
datetime <- ymd_hms("2026-07-08T12:34:56")
datetime            # [1] "2026-07-08 12:34:56 UTC"
datetime |> year()  # [1] 2026
datetime |> month() # [1] 07
datetime |> month(label = T)         # [1] Jul
datetime |> month(label = T, abbr=F) # [1] July
datetime |> day()   # [1] 8
datetime |> mday()  # [1] 8
datetime |> yday()  # [1] 189
datetime |> wday(label = F)           # [1] 4
datetime |> wday(label = T)           # [1] Wed
datetime |> wday(label = T, abbr = F) # [1] Wednesday

 

 

4. 시간 범위

  • 듀레이션형 : 정확한 초를 나타냄 

as.duration(difftime) difftime 객체를 초로 반환 dseconds(numeric) 초를 반환
dminutes(numeric) 분을 초로 반환 dhours(numeric) 시간을 초로 반환
ddays(numeric) 일을 초로 반환 dweeks(numeric) 주를 초로 반환
dmonths(numeric) 월을 초로 반환 dyears(numeric) 년을 초로 반환

 

  • 피어리드형 : 시간의 범위로 사람이 생각하는 시간으로 동작한다

seconds(n) n초를 반환 minutes(n) n분을 반환
hours(n) n시간을 반환 days(n) n일을 반환
months(n) n월을 반환 weeks(n) n주를 반환
years(n) n년을 반환 period(num, unit) 주어진 유닛에 따른 시간단위을 반환

 

듀레이션은 정확한 초를 나타내서 일광절약제(한국에서는 사용안함) 및 윤년(2월 29일까지 있는 해)이 적용되어 표시되나 피어리드형은 사람의 시간으로 직관적으로 동작하기에 하루/일년이 지난 시간으로 나온다.

ymd("2024-01-01") + dyears(1) #[듀레이션] "2024-12-31 06:00:00 UTC"
ymd("2024-01-01") + years(1)  #[피어리드] "2025-01-01"

 

저작자표시 비영리 변경금지 (새창열림)

'Data Science > Manipulation' 카테고리의 다른 글

[Data Science With R] 13. 함수형(Functional) with Base and purrr  (0) 2023.04.16
[Data Science With R] 12. 함수(Function)  (0) 2023.04.16
[Data Science With R] 10. 범주형 데이터 조작 with forcats (202406)  (0) 2023.04.08
[Data Science With R] 9. 정규표현식(Regular Expression) with Stringr (202406)  (0) 2023.04.04
[Data Science With R] 8. 관계형 데이터  (0) 2023.04.01
'Data Science/Manipulation' 카테고리의 다른 글
  • [Data Science With R] 13. 함수형(Functional) with Base and purrr
  • [Data Science With R] 12. 함수(Function)
  • [Data Science With R] 10. 범주형 데이터 조작 with forcats (202406)
  • [Data Science With R] 9. 정규표현식(Regular Expression) with Stringr (202406)
임파카
임파카
[ML & Statistics] 모바일 버전에서 수식 오류가 있어 PC 환경에서 접속하는 것을 권장합니다.
  • 임파카
    무기의 스탯(Stat)
    임파카
  • 전체
    오늘
    어제
    • Study (149)
      • Data Science (44)
        • Modeling (18)
        • Manipulation (21)
        • Visualization (4)
      • Statistics (59)
        • Mathmetical Statistics (53)
        • Categorical DA (1)
      • Web Programming (17)
      • AI (26)
        • Machine Learning (16)
        • Deep Learning (10)
      • 활동 및 프로젝트 (3)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
임파카
[Data Science With R] 11. Time Data with lubridate (202406)
상단으로

티스토리툴바