首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >月平均时间序列

月平均时间序列
EN

Stack Overflow用户
提问于 2019-04-09 09:36:43
回答 1查看 884关注 0票数 1

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

代码语言:javascript
复制
library(hydroTSM)
ma= monthlyfunction(data, mean, na.rm=TRUE)

我亦知道如何取得每月价值的总和:

代码语言:javascript
复制
su= monthlyfunction(data, sum, na.rm=TRUE)

但在最后一次比赛中,我得到了整个时期意甲联赛的月薪。我想得到每月平均金额,我的意思是,例如:

代码语言:javascript
复制
jan 1980 (sum)= 150
jan 1981 (sum)= 180
jan 1982 (sum)= 90

expected value for january = average(150,180,90)= 140

是否有一个函数来代替平均值和和?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 11:55:50

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55589615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档