날짜 데이터 계열 맞춰서 Plotting

가지고 있는 데이터가 2009년 7월, 2009년 9월, 2010년 1월, 2월 이렇게 중간이 휑~하게 비어 있는 꼴이라면 대체 어떻게 plotting해야 하나요? 데이터가 data$value라면

> plot(data$value, type='l')

이렇게 할 것인데... 선 그래프가 2009년 7월 9월, 2010년 1월, 2월 이렇게 4개만 출력해줍니다. 그 사이 값은 0인데, 즉 2009년 8월=0, 2009년 10월=0, 11월=0, 12월=0 이런 식입니다만, 그래프 값에 이 0은 찍히지 않습니다. 이 문제를 어떻게 해야 하나?

> x_t0 <- as.POSIXlt(data$ts_posix)

이렇게 하여 ts_posix이라는 컬럼에서 POSIX 개체를 가져와서 as.POSIXlt로 list time 객체를 만들었다고 하지요. 계열을 만드는 것은 쉽습니다.

> a <- as.POSIXlt(seq(min(x_t0),max(x_t0),"mon"))
> x_t1 <- paste(a$year+1900,a$mon+1,sep="-")

짜잔~ 이제 년도와 월별 계열이 나왔습니다.

> yy <- numeric(length(x_t1))

이렇게 함으로써 0 값을 가지는 yy 수열을 만듭니다.

> x_t <- paste(x_t0$year+1900,x_t0$mon+1,sep="-")
> y <- tapply(data$value,x_t,mean)

데이터의 value 열을 년월 기준으로 평균을 취해서 y를 구합니다.

> y <- y[order(names(y))]

이렇게 순서를 맞춰주고...

> yy[names(y)] <- y

yy값에 lookup하면 ~ 끝.

> plot(yy, type='l')

원하는 플롯을 그립니다.


댓글

이 블로그의 인기 게시물

R에서 csv 파일 읽는 법

xlwings tutorial - 데이터 계산하여 붙여 넣기