2010-04-09 3 views
5

시계열에서 계산 델타 : X 및 Y에 대한 예제 샘플에서R : I가 R에 샘플의 시계열을

> str(d) 
'data.frame': 5 obs. of 3 variables: 
$ date: POSIXct, format: "2010-03-04 20:47:00" "2010-03-04 21:47:00" ... 
$ x : num 0 10 11 15.2 20 
$ y : num 0 5 7.5 8.4 12.5 
> d 
       date x y 
1 2010-03-04 20:47:00 0.0 0.0 
2 2010-03-04 21:47:00 10.0 5.0 
3 2010-03-04 22:47:00 11.0 7.5 
4 2010-03-04 23:47:00 15.2 8.4 
5 2010-03-05 00:47:00 20.0 12.5 

매 시간마다 수행된다 (단, 시간 (δ)는 고정되지 않음). x 및 y 값은 항상 커집니다 (예 : 자동차의 밀리 게이지 카운터). 나는 델타를 필요 사이의 성장, 이런 일이 얼마나 많은 :

1 2010-03-04 20:47:00 0.0 0.0 
2 2010-03-04 21:47:00 10.0 5.0 
3 2010-03-04 22:47:00 1.0 2.5 
4 2010-03-04 23:47:00 4.2 0.9 
5 2010-03-05 00:47:00 4.8 4.1 

그리고 나는 또한 델타 시간 당 (x 및 시간으로 나눈 Y 델타 - 시간 당 델타)가 필요합니다

R에서 어떻게합니까?

답변

5

그냥 diff()를 사용하여 한 번 zoo 같은 시간 인식 데이터 구조로 전환 :

> library(zoo) 
> DF <- data.frame(date=Sys.time() + 0:4*3600, x = cumsum(runif(5)*10), 
               y=cumsum(runif(5)*20)) 
> DF 
       date  x  y 
1 2010-04-09 15:14:54 9.6282 14.709 
2 2010-04-09 16:14:54 12.4041 28.665 
3 2010-04-09 17:14:54 18.1643 34.244 
4 2010-04-09 18:14:54 27.5785 41.028 
5 2010-04-09 19:14:54 33.2779 57.020 
> zdf <- zoo(DF[,-1], order.by=DF[,1]) 
> diff(zdf) 
         x  y 
2010-04-09 16:14:54 2.7759 13.9556 
2010-04-09 17:14:54 5.7602 5.5792 
2010-04-09 18:14:54 9.4142 6.7844 
2010-04-09 19:14:54 5.6995 15.9919 
> 

쉽게 패드 첫 번째 행이 다시 병합 할 수 있습니다, ... 등 - 패키지 zoo에 대한 훌륭한 설명서를 참조하십시오 자세한 내용은