2013-11-14 4 views
4

저는 R이 얼마나 강력한 지 알지만, 약간 잃어 버렸습니다. 그런 경우 인플레이션이라는 분기 별 시계열이 있습니다. 목표는 각 분기 별 데이터 포인트의 성장률을 계산하는 것입니다. 기본적으로 1981 년 1 분기부터 시작하여 1981 년 인플레이션 Q1 (1981 년 인플레이션)/1981 년 1 분기 인플레이션 Q1 등등 ...분기 별 시계열의 전년 대비 증가율 계산

diff (인플레이션, 지연 = 4) 나는 첫 번째 부분을 얻는다. (인플레이션 Q1 1982 - 인플레이션 Q1 1981). 하지만 어떻게하면 R이 인플레이션 Q1 1981에 의해 첫 번째 점을 나눈 다음 인플레이션 Q2 1981에 의해 나눌 수 있다고 말할 수 있습니까?

다른 언어와 마찬가지로 첫 번째 방법은 루프가 될 수 있지만 R은 할 수 있다고 확신합니다. 더 빠르고 효율적으로 처리 할 수 ​​있습니다.

감사합니다. 여기

답변

4

당신은

> series <- ts(1:12, frequency = 4, start = c(1981, 1)) # example of quarterly serie 
> series # this is how `series` looks like 
    Qtr1 Qtr2 Qtr3 Qtr4 
1981 1 2 3 4 
1982 5 6 7 8 
1983 9 10 11 12 
> diff(series, lag=4)/ lag(series, k=-4) # the result you want 
      Qtr1  Qtr2  Qtr3  Qtr4 
1982 4.0000000 2.0000000 1.3333333 1.0000000 
1983 0.8000000 0.6666667 0.5714286 0.5000000 

또 다른 대안으로 사용할 수 있습니다

> (series/lag(series, k=-4))-1 
+0

그레이트 감사합니다! 그것은 매우 소급 된 것 같습니다! 루프를 수행하는 것보다 훨씬 효율적입니다! – user2952666

+0

이 질문에 정말 답변이 있으면 대답을 수락 할 수 있습니다. –

+0

예 ... 어떻게해야합니까? – user2952666

관련 문제