Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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-时间序列月和的平均值_R_Time Series_Mean_Zoo_Hydrotsm - Fatal编程技术网

R-时间序列月和的平均值

R-时间序列月和的平均值,r,time-series,mean,zoo,hydrotsm,R,Time Series,Mean,Zoo,Hydrotsm,我有一个很长的降水数据时间序列(zoo),我知道如何获得月平均值: library(hydroTSM) ma= monthlyfunction(data, mean, na.rm=TRUE) su= monthlyfunction(data, sum, na.rm=TRUE) 我还知道如何获得每月值的总和: library(hydroTSM) ma= monthlyfunction(data, mean, na.rm=TRUE) su= monthlyfunction(data, sum,

我有一个很长的降水数据时间序列(zoo),我知道如何获得月平均值:

library(hydroTSM)
ma= monthlyfunction(data, mean, na.rm=TRUE)
su= monthlyfunction(data, sum, na.rm=TRUE)
我还知道如何获得每月值的总和:

library(hydroTSM)
ma= monthlyfunction(data, mean, na.rm=TRUE)
su= monthlyfunction(data, sum, na.rm=TRUE)
但最后一次,我得到了整个赛季的月收入。我想得到每月平均金额,例如:

jan 1980 (sum)= 150
jan 1981 (sum)= 180
jan 1982 (sum)= 90

expected value for january = average(150,180,90)= 140
是否有一个函数来代替平均值和总和?

库(HydrothSM)
library(hydroTSM)

#This data is daily streamflows, but is similar to Precipitation
data(OcaEnOnaQts)
x <- OcaEnOnaQts

#In case you want monthly precipitation in "precipitation / 30 days" (what is common) you can use
monthlyfunction(x, FUN=mean, na.rm=TRUE) * 30

#In case you want the precipitation per days in specific month you can use
monthlyfunction(x, FUN=mean, na.rm=TRUE) * as.vector(dwi(x, out.unit = "months") * mean(dwi(x)) / sum(dwi(x)))

#or approximately
monthlyfunction(x, FUN=mean, na.rm=TRUE)*c(31,28.25,31,30,31,30,31,31,30,31,30,31)


#Add: Some ways to come to the mean monthly precipitation
p1980 <- c(rep(0,28), 50, 50, 50) #sum = 150
p1981 <- c(rep(0,28), 60, 60, 60) #sum = 180
p1982 <- c(rep(0,28), 30, 30, 30) #sum = 90
#
mean(c(sum(p1980), sum(p1981), sum(p1982))) # = 140 This is how you want it to be calculated
mean(c(p1980, p1981, p1982))*31 # = 140 This is how I suggested to come to the result
#Some other ways to come to the mean monthly precipitation
mean(c(mean(p1980), mean(p1981), mean(p1982)))*31 # = 140
sum(c(p1980, p1981, p1982))/3 # = 140
#该数据为每日流量,但与降水量相似 数据(OcaEnOnaQts)
x你能给出你的数据让我们先试试吗?@TheRimalaya,这里是一个示例文件的链接:It this a daily data?@TheRimalaya ja,79年的每日数据Hanks但这都不是我的情况,我有79年的每日时间序列,我希望从中获得12个值的向量(每个月一个),每个月的唯一值应代表每年所有月总和的平均值。请让我知道我是否清楚地解释了我自己,如果观察的数量相同,例如,在你们每年的一月份,结果应该是相同的。用平均值计算每天的平均降水量。如果将其与当月天数相乘,则得到每月平均降水量,等于所有月总和的平均值。否。当我说总和时,我指的是累计值(从每个月的第1天到第30天的值的总和)。下一年的这个值会有所不同,下一年等等,考虑到所有年份,我需要每个月这个累积值的平均值。最后我应该得到每个月的平均值。我希望我的解释清楚,你只是需要月平均降水量的结果,还是迫切需要按照你预期的方式计算?请看一看我的答案中的“添加”,这表明有不止一种方法可以达到预期的结果。其他方法的唯一条件是,您的数据还包括0降水量的观测,这是降水量观测的典型情况。