R语言 将日值求和为月值

rqdpfwrv  于 2023-01-03  发布在  其他
关注(0)|答案(2)|浏览(206)

我试图将日降雨量加总到月降雨量中,以记录超过100年的降雨量。我的数据如下:

Year     Month     Day     Rain
1890       1        1         0
1890       1        2       3.1
1890       1        3       2.5
1890       1        4      15.2

在上面的例子中,我希望R计算1890年1月、1890年2月、1890年3月......到2010年12月的所有降雨天数,我想我要做的是创建一个循环来计算这些值的总和,我的输出文件应该如下所示:

Year    Month    Rain
1890      1       80.5
1890      2       72.4
1890      3       66.8
1890      4       77.2

有什么简单的方法吗?
非常感谢。

i7uaboj4

i7uaboj41#

您可以使用dplyr来实现一些令人满意的语法

library(dplyr)

df %>%
  group_by(Year, Month) %>%
  summarise(Rain = sum(Rain))
5ssjco0h

5ssjco0h2#

在某些情况下,将其转换为xts这样的时间序列类是有益的,然后您可以使用apply.monthly()这样的函数。
数据:

df <- data.frame(
  Year = rep(1890,5), 
  Month = c(1,1,1,2,2), 
  Day = 1:5,
  rain = rexp(5)
)

> head(df)
      Year Month Day      rain
    1 1890     1   1 0.1528641
    2 1890     1   2 0.1603080
    3 1890     1   3 0.5363315
    4 1890     2   4 0.6368029
    5 1890     2   5 0.5632891

将其转换为xts并使用apply.monthly()

library(xts)
dates <- with(df, as.Date(paste(Year, Month, Day), format("%Y %m %d")))
myXts <- xts(df$rain, dates)

> head(apply.monthly(myXts, sum))
                [,1]
1890-01-03 0.8495036
1890-02-05 1.2000919

相关问题