2017-11-18 9 views
-1
for(t in 1921:2017) { 
    nam <- paste("", t, sep = "") 
    assign(nam, window(aCPI_gr, start=c(t,1), end=c(t,12))) 
} 
aCPI_gr_y <- cbind(`1921`: `2017`) #doesn't work 

이 루프는 매년 매월 CPI 데이터가있는 벡터를 생성합니다. 이제는 cbind를 사용하여 데이터 프레임에 모든 내용을 담고 싶습니다만, 물론 cbind 함수에서 매 년 벡터를 손으로 입력하는 것은 게으른 방법입니다. 매년 손으로 입력하는 것을 피하는 쉬운 방법이 있습니까? cbind( 1921 : 2017 )연간 벡터를 사용하는 cbind 함수

답변

0

1) 매트릭스 당신은 아래의 테스트 시리즈 tser로 97 년,에 걸쳐 매달 일차원 ts 시리즈가있는 경우 같은, 다음이 일년에 12 X 97 행렬로 변환합니다 컬럼 당. 이름이 필요하지 않은 경우 dimnames 인수는 생략 할 수 있습니다.

tser <- ts(seq_len(12 * 97), start = 1921, freq = 12) # test data 
m <- matrix(tser, 12, dimnames = list(month = 1:12, year = 1921:2017)) 

2)는 tapply 대안은 다음과 같습니다

tapply(tser, list(month = cycle(tser), year = as.integer(time(tser))), c) 
+0

와우! 매우 우아한 .. 많은 감사합니다! – yaennu