2017-11-03 12 views
0

나는 운이 좋은 대답을 찾기 위해 많은 시간을 보냈습니다. 몇 가지 시계열 데이터가 있으며 그 데이터에서 n 번째 행마다 롤링 평균을 작성하고 작성해야합니다. 이것은 동물원에서 가능하고 아마 hmisc이고 나는 다른 패키지를 확신합니다. 나는 행 1,2,3, 3,4,5를 평균 5,6,7 등으로 평균화 할 필요가있다. 내 데이터는 모양과 관찰의 수천이 있습니다시계열을 지연시키고 시계열 데이터를 요약합니다.

id time x.1 x.2 y.1 y.2 
10  1  22  19  0  -.5 
10  2  27  44  -1  0 
10  3  19  13  0  -1.5 
10  4  7  22  .5  1 
10  5  -15 5  .33 2 
10  6  3  17  1  .33 
10  7  6  -2  0  0 
10  8  44  25  0  0 
10  9  27  12  1  -.5 
10  10 2  11  2  1 

나는이 완료되면이 같이 싶습니다 :

id time  x.1  x.2  y.1  y.2 
10 1  22.66 25.33 -.33 -.66 
10 2  3.66 13.33 .27  .50 

시간은 VAR (1) 실제로 1,2,3 평균 시간을 것을 2는 평균 3,4,5이지만이 시점에서 var는 유지하는 것이 중요하지 않습니다. 결국에는 ID로 그룹화해야하므로 결국 변경됩니다. 이 작업을 성공적으로 수행하는 방법을 알아낼 수있는 유일한 방법은 Lag()을 사용하여 새로운 행을 1로 만들고 다른 행을 2로 만들고 그 다음에 평균을 가로 질러 가져 오는 것입니다. 그 후 당신은 ... 다른 모든 행을

1 NA NA 
    2 1 NA 
    3 2 1 
    4 3 2 
    5 4 3 

사용 123 및 345 제거 (234)을 삭제 각 VAR을 위해이 일을하는 것은 내가 새로운 데이터를 수집 특히 터무니없는 것있다.

어떤 아이디어가 있습니까? 도움을 많이 바란다

답변

0

이런 식으로 뭔가?

# sample data 
id <- c(10,10,10,10,10,10) 
time <- c(1,2,3,4,5,6) 
x1 <- c(22,27,19,7,-15,3) 
x2 <- c(19,44,13,22,5,17) 

df <- data.frame(id,time,x1,x2) 

means <- data.frame(rollmean(df[,c(1,3:NCOL(df))], 3)) 

means <- means[c(T,F),] 
means$time <- seq(1:NROW(means)) 
row.names(means) <- 1:NROW(means) 

> means 
    id  x1  x2 time 
1 10 22.666667 25.33333 1 
2 10 3.666667 13.33333 2