簡體   English   中英

滯后並匯總時間序列數據

[英]lag and summarize time series data

我花了大量時間尋找運氣不好的答案。 我有一些時間序列數據,需要折疊並在該數據的第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 ...對每個變量執行此操作將非常令人討厭,尤其是當我收集新數據時。

有任何想法嗎? 幫助將不勝感激

像這樣的東西?

# 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM