본문 바로가기

R programming

시계열 데이터 밑바닥부터 다루기 in R (2)

반응형

요일로 변환하기

우리는 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사이에 있는 날짜가 아니기 때문이다.

 

 

 

반응형