Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 最近5天平均值_R - Fatal编程技术网

R 最近5天平均值

R 最近5天平均值,r,R,因此,我的数据如下所示: DATE Value 1/2/2004 68 1/5/2004 92 1/6/2004 100 1/7/2004 73 1/8/2004 71 1/9/2004 75 1/12/2004 100 1/13/2004 59 1/14/2004 71 1/15/2004 74 1/16/2004 54 1/19

因此,我的数据如下所示:

DATE        Value
    1/2/2004    68
    1/5/2004    92
    1/6/2004    100
    1/7/2004    73
    1/8/2004    71
    1/9/2004    75
    1/12/2004   100
    1/13/2004   59
    1/14/2004   71
    1/15/2004   74
    1/16/2004   54
    1/19/2004   68
    1/20/2004   64
    1/21/2004   53
    1/26/2004   67
    1/27/2004   53
    1/28/2004   58
    1/29/2004   56
    1/30/2004   86
    2/3/2004    79
    2/4/2004    82
    2/5/2004    51
    2/6/2004    61
    2/9/2004    99
    2/10/2004   51
    2/11/2004   61
    2/12/2004   88
    2/13/2004   64
    2/16/2004   99
    2/17/2004   90
    2/18/2004   97
    2/19/2004   61
    2/20/2004   59
    2/23/2004   63
    2/24/2004   64
    2/25/2004   74
    2/26/2004   88
    2/27/2004   93
这种情况持续了5年

我想用R来计算每个月最后5天的平均值,这可能吗

我希望这是清楚的

谢谢。

如果df是您的数据框:

使用dplyr/tidyr的选项

或者一个基本的R选项是

  MONTH <- sub('/.*', '', df$DATE)
  YEAR <-  sub('.*/', '', df$DATE)
  aggregate(Value~MONTH+YEAR, df, FUN=function(x) mean(tail(x,5)))
  #  MONTH YEAR Value
  #1     1 2004  64.0
  #2     2 2004  76.4

凉的和实际问题!不需要指定新列。您可以执行setkeysetDTdf,DATE[,meantailValue,5,by=.yearDATE,monthDATE]实际上,这是一个很好的代码缩减!美好的虽然没有必要设置key-setDTdf[orderDATE,mean.,by=.]也应该非常有效。哦,好吧,我使用setkey隐式地排序,但是对于一些不熟悉data.table的人来说,顺序可能很清楚。您尝试过什么,代码的哪一部分给您带来了问题?请记住,在一般的工作流程中,SO并不是征求建议的最佳网站,如果您提出明确的编程问题,它将是最受欢迎的网站。
library(dplyr)
library(tidyr)
gby <-  extract(df, DATE, c('month', 'year'), '(.*)/.*/(.*)') %>%
                                             group_by(month, year) 

gby %>%
      slice((n()-4):n()) %>% 
      summarise(Value=mean(Value))
 #   month year Value
 #1     1 2004  64.0
 #2     2 2004  76.4
gby %>%
     summarise(Value=mean(tail(Value,5)))
  MONTH <- sub('/.*', '', df$DATE)
  YEAR <-  sub('.*/', '', df$DATE)
  aggregate(Value~MONTH+YEAR, df, FUN=function(x) mean(tail(x,5)))
  #  MONTH YEAR Value
  #1     1 2004  64.0
  #2     2 2004  76.4