문자 변수를 날짜 변수로 변환하기 R에서 시계열 데이터를 다룰 때, 변수를 날짜 타입으로 변환한다면 플롯을 하는데 간편한 점이 많다. R의 날짜 데이터 타입으로는 "POSIXct" 가 있으며, as.POSIXct 함수를 통해 문자 변수를 POSIXct 타입으로 변환할 수 있다. 반대로 POSIXct 타입을 문자 타입으로 바꾸는 것은 format이나 as.character를 이용한다. # create POSIXct variables as.POSIXct("080406 10:11", format = "%y%m%d %H:%M") ## [1] "2008-04-06 10:11:00 CDT" as.POSIXct("2008-04-06 10:11:01 PM", format = "%Y-%m-%d %I:%M:%S %p") ## [1] "2008-04-06 22:11:01 CDT" as.POSIXct("08/04/06 22:11:00", format = "%m/%d/%y %H:%M:%S") ## [1] "2006-08-04 22:11:00 CDT" # convert POSIXct variables to character strings format(as.POSIXct("080406 10:11", format = "%y%m%d %H:%M"), "%m/%d/%Y %I:%M %p") ## [1] "04/06/2008 10:11 AM" as.character(as.POSIXct("080406 10:11", format = "%y%m%d %H:%M"), format = "%m-%d-%y %H:%M") ## [1] "04-06-08 10:11" 만약 어떤 dataframe의 column이 POSIXct 타입이라면, 내부적으로는 정수를 저장하고 있기 때문에 Plot을 할 때는 숫자 형태로 변환하여 데이터를 순차적으로 나타내준다. 그래프 그리기 data <- read.csv("C:\\workspace\\r\\data\\data.csv") plot(data$dateFormat, data$value) 이렇게 기본 내장함수인 plot을 사용해도 x축을 시간으로 하여 괜찮은 모양으로 그려주는 것을 확인할 수 있다. 만약 x축 값의 포맷을 지정하거나, 적절한 간격을 주고 싶다면 ggplot2 패키지를 이용하는 것도 좋다. GGPLOT2 라이브러리를 통한 그래프 그리기 library(scales) ggplot(data = data, aes(x = date, y = value)) + geom_line(size=2) + ylim(0,1000) + xlab("Time") + ylab("㎍/㎥") + scale_x_datetime(breaks = date_breaks("1 hour"), minor_breaks=date_breaks("1 hour"), labels=date_format("%H:%M"), limits=xlim) + ggtitle("title") + theme_bw() + theme(text = element_text(size = 25)) ggplot 명령어 설명 aes : (x축, y축에 사용될 변수를 지정한다.) geom_line : line plot. size 키워드를 통해 선의 굵기 지정 ylim : y축의 범위를 지정함 xlab : x축 label ylab : y축 label scale_x_datetime : x축의 간격, 포맷을 지정함. (library(scales) 이후에 사용할 수 있다.) ggtitle : title 지정 theme_bw() : 해당 테마 지정 (black & white style) theme : 그래프의 전반적인 속성을 지정한다. 위에서는 텍스트 사이즈를 25 조정함 특정 날짜 범위에 있는 데이터만 골라내기 아래 코드는 date가 2018/01/16 인 row만 골라서 subset으로 저장한다. 이처럼 format을 통해 POSIXct 데이터 타입을 character 타입으로 변환할 수 있다.
참고 http://biostat.mc.vanderbilt.edu/wiki/pub/Main/ColeBeck/datestimes.pdf —R을 이용하여 플롯(그래프)를 그릴때 가장 마음대로 나오지 않는 플롯이 선 플롯이다. 보통 선 플롯은 일변량으로 그리는 경우보다는 다변량으로 그리는 경우가 많기 때문에 한 플롯내에서 여러 변량을 어떻게 다루는가가 매우 중요하다. 이 포스트에서는 ggplot2 패키지를 사용하여 다변량 선 플롯을 만드는 두가지 방법에 대해 살펴보고자 한다. ggplot2 패키지를 사용하여 다변량 선 플롯을 그리는 방법은 긴(long) 형태의 데이터프레임을 사용하는 방법과 먼저 실습에 사용할 데이터를 로딩하겠다.
1. 긴(long) 데이터 프레임R에서 가장 권장하는 데이터 구성방법은 간결한(tidy) 데이터 형태로 데이터를 표현하는 것이다. 이렇게 표현된 데이터를 tidy data라고 표현하는데 다음과 같이 구성될때 tidy data라고 한다.
긴(long) 형태의 데이터프레임은 tidy한 데이터프레임의 여러개의 변수열을 하나의 열로 병합하여 행이 많아져서 전체적인 구조가 아래로 길어지는 형태를 말한다. tidy한 데이터프레임을 긴 형태의 데이터프레임으로 변환할 때 사용하는 함수가 앞에서 로딩한 students 데이터프레임은 tidy한 형태이다.
이 데이터에서 유치원, 초등학교, 중학교, 고등학교계 열만을 사용하여 프레임을 다음과 같이 길게 만들수 있다.
길게 만든 students.long 데이터프레임을
위의 코드에서 주의깊게 살펴야하는 부분이 이 플롯에는 모두 같은 색깔의 선이 그려지기 때문에 각 변량을 구분할 수 없다. 따라서 색이나 라인 형태로 각 변량을 구분해줄 필요가 있다.
이 경우 장점은 사용하기가 쉽고 자동적으로 범례가 만들어진 다는 점이지만 단점은 grouping되는 열의 일부를 사용한다거나 색깔 설정, 라인타입 설정시에 다소 복잡한 과정을 거쳐야 한다는 점이다. 2. geom_line() 여러번 사용하기
위의 코드와 같이 이 경우는 앞의 코드와 같이 각 선의 형태를 각각 설정하는게 상대적으로 쉽다는 점이지만 단점은 범례나 축제목 등을 수동으로 구성해주야 한다는 점이다. |