요일로 변환하기
우리는 YYYY-MM-DD 형택의 데이터에서 종종 해당날짜의 요일을 필요로 할 때가 있다.
요일에 따라 구분된 데이터는 예컨대 요일별 매출추이 등을 봐야할 때 유용할 것이다.
이럴 때 wday함수를 통해 요일을 추출해낼 수 있다.
wday함수는 날짜에 따른 요일을 숫자로 표시해준다.
일요일=1, 월요일=2, 화요일=3, 수요일=4, 목요일=5, 금요일=6, 토요일=7 로 표기되며
wday(date, label=TRUE)
label=TRUE를 통해 숫자에서 영문으로 표시를 바꿀 수 있다.
날짜 반올림, 올림, 내림처리
시계열 데이터 밑바닥부터 다루기 in R(1)에서 연,월,일 등의 요소를 추출하는 방법을 배웠지만
이럴 경우 추출한 값을 제외한 나머지 값들을 잃었다.
이럴 때 날짜를 반올림, 올림, 내림 처리를 할 경우 이러한 소중한 정보들을 지킬 수 있다.
동시에 일별,월별,연도별로 쉽게 데이터를 전처리하여 groupby나 summarise등을 통해
데이터의 통계값을 활용할 수 있다.
이해를 돕기위해 2020년 2월 4일 오후 1시 2분 52초를 date라는 변수로 지정한다.
date<-ymd_hms("2020-02-04 13:02:52")
해당 변수를 내림, 반올림, 올림을 실행할 코드와 결과는
아래의 코드와 각주와 같다.
floor_date(date, unit = "day") #내림을 합니다. 기준은 "day"
#결과는 "2020-02-04 UTC"
round_date(date, unit = "5 minutes") #반올림 합니다. 기준은 "5분"
#결과는 "2020-02-04 13:05:00 UTC"
ceiling_date(date, unit= "week") #올림을 합니다. 기준은 "주"
#결과는 "2020-02-09 UTC"
두 날짜사이 간격 알아보기
시작일 2019-01-01 과 종료일 2019-12-31 를 하나의 원소 속에 구분지은 채로 넣을 수 있다.
date <- ymd("YYYY-MM-DD") %--% ymd("YYYY-MM-DD")
#또는
date <- interval(ymd("YYYY-MM-DD"), ymd("YYYY-MM-DD"))
두 방식을 통해 하나의 원소 속에 YYYY-MM-DD UTC --YYYY-MM-DD UTC꼴의 데이터를 저장할 수 있다.
이렇게 저장된 데이터는
int_start(date)
int_end(date)
두 함수를 통해 시작일과 종료일을 각각 불러올 수 있다.
또한
int_length(date) #초로 두 시각의 차이를 나타냄
as.period(date) #두 시각의 기간을 연, 월, 일, 시, 분, 초로 나타냄
as.duration(date) #두 시각의 듀레이션을 , 월, 일, 시, 분, 초로 나타냄
위와 같은 함수도 존재한다.
두 날짜 사이에 특정시간이 포함되는지 알아볼 수도 있다.
예를 들어
date<- ymd("2019-01-01) %--% ymd("2019-12-31") #date의 기간은 2019년 1월 1일부터 2019년 12월 31일까지
ymd("2020-01-01") %within% date #2020년 1월 1일은 date 기간 안에 있니? 라고 물어보는 것
라고 입력하면 FALSE가 뜬다.
왜냐하면 2020년은 1월 1일은 date사이에 있는 날짜가 아니기 때문이다.
'R programming' 카테고리의 다른 글
조금 더 현실적인 SQL 쿼리짜기 - R 코드로 같은 결과만들기 (0) | 2022.01.08 |
---|---|
길이가 다른 값들을 구분하여 각 열로 나누어주기 in R (0) | 2020.06.13 |
시계열 데이터 밑바닥부터 다루기 in R (1) (0) | 2020.02.03 |
data.frame과 data.table을 비교해보자 in R (0) | 2019.10.28 |
지도학습(supervised learning): 의사결정나무(decision tree)이해하기 (0) | 2019.07.21 |