簡體   English   中英

時間段的平均值取決於行的日期

[英]average for time period dependent on date of row

我有一個日期列表,每個日期都有一個值。

這就是我的數據框現在的樣子。 請注意,日期可以重復,但是值的輸入也將重復相同的值(即第2行和第3行具有相同的日期,但是各自的值也相同)。

  date         value
1 2018-02-08   1
2 2018-02-09   2
3 2018-02-09   2
4 2018-02-10   4
  ...          ...

這就是我希望數據框看起來像的樣子

     date         value  weekavg
   1 2018-02-08    1     ...
   2 2018-02-09    2     ...
   3 2018-02-09    2     ...
   4 2018-02-10    4     ...
   5 2018-02-11    0     ...
   6 2018-02-12    0     ...
   7 2018-02-13    0     ...
   8 2018-02-14    0     ...
   9 2018-02-15    0     1
     ...           ...   ...

為了澄清起見,第九行中的條目是通過查找一周之前發生的日期來計算的,因此對於2018-02-15而言,這將是2018-02-08至2018-02-13的日期范圍。 因此,由於1 + 2 + 4 + 0 + 0 + 0 + 0 = 7,結果為1。我該如何在R中進行此操作,然后對每一行進行處理?

------可復制的示例-----

數據

lines <-    "date      value
        1   2018-02-08    NA
        2   2018-02-08    NA
        3   2018-02-09    NA
        4   2018-02-10   295
        5   2018-02-10   295
        6   2018-02-11   329
        7   2018-02-12   242
        8   2018-02-12   242
        9   2018-02-13   317
        10  2018-02-14   341
        11  2018-02-15   292
        12  2018-02-16   363
        13  2018-02-17   380
        14  2018-02-18   319
        15  2018-02-19   307
        16  2018-02-20   328
        17  2018-02-21   290"

df <- read.table(text = lines)
newDF <- merge(df, transform(unique(df), mean = rollmeanr(value, 7, fill = NA)))

平均值欄對我來說只是NA。

PS道歉的圖像評論,我不知道。 非常感謝您的幫助。

該問題並未完全定義輸出,而是假設:

  • 沒有失落的日子,只有重復的日子
  • 如果重復一天,則該行的平均值應該重復

然后:

library(zoo)

merge(DF, transform(unique(DF), mean = rollmeanr(value, 7, fill = NA)))

對於注釋中可重復顯示的示例數據,得出:

        date value      mean
1 2018-02-08     1        NA
2 2018-02-09     2        NA
3 2018-02-09     2        NA
4 2018-02-10     4        NA
5 2018-02-11     0        NA
6 2018-02-12     0        NA
7 2018-02-13     0        NA
8 2018-02-14     0 1.0000000
9 2018-02-15     0 0.8571429

注意

Lines <- "
     date         value 
   1 2018-02-08    1 
   2 2018-02-09    2  
   3 2018-02-09    2 
   4 2018-02-10    4    
   5 2018-02-11    0 
   6 2018-02-12    0 
   7 2018-02-13    0 
   8 2018-02-14    0    
   9 2018-02-15    0
"
DF <- read.table(text = Lines)

暫無
暫無

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

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