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