날짜 데이터 계열 맞춰서 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')
원하는 플롯을 그립니다.
> 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')
원하는 플롯을 그립니다.
댓글
댓글 쓰기