我有一个时间序列,其中包含30年的每日数据(两列分别标有日期和值)
Date Value
01-01-1975 0.051
02-01-1975 0.051
03-01-1975 0.051
04-01-1975 0.051
05-01-1975 0.051
06-01-1975 0.051
07-01-1975 0.051
08-01-1975 0.051
09-01-1975 0.051
10-01-1975 0.048
11-01-1975 0.048
12-01-1975 0.048
.........
我正在尝试将5天总计汇总为总和(因此,每年我会生成73个值,这是a年,那么最后一个值将是6天总计而不是5天)。换句话说,我一直想开始每年的1月1日结束,并且总是在12月31日结束,但是我需要以某种方式处理year年的情况,例如,分别对待每一年或找到and年并以不同的方式对待它们。但是我有问题
我做了以下事情
test <- read.csv("~/H/x.csv")
test$Date <- as.Date(test$Date, format = "%d-%m-%Y")
output <- aggregate(Flow ~ cut(Date, "5 days"), test, sum)
但这并没有给我想要的结果,这是我每年要计算73个值的结果。
这是我第一次学习编程和R语言,因此非常欢迎您的指导
cut
减少5天,但要按ave
年进行,这样几周就不会跨越一年的界限。这给了Date5
。现在aggregate
超过切割值:
# test data
DF <- data.frame(Date = seq(as.Date("1975-01-01"), length = 2000, by = "day"),
Value = 1:2000)
to.yr <- function(x) as.numeric(format(x, "%Y"))
Date5 <- ave(DF$Date, to.yr(DF$Date), FUN = function(x) cut(x, "5 day"))
ag <- aggregate(Value ~ Date5, DF, sum)
计算使用的周数(全部或部分):
> table(to.yr(ag$Date5))
1975 1976 1977 1978 1979 1980
73 74 73 73 73 35
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句