将每日值汇总为月度值

时间:2015-10-13 14:53:20

标签: r

我试图将每日降雨量值总计为每月总数超过100年的记录。我的数据采用以下形式:

JobDetail job = new JobDetail();
    job.setName("dummyJobName");
    job.setJobClass(HelloJob.class);

    //configure the scheduler time
    Trigger trigger = new CronTrigger("trigger1", "group1");
    trigger.setCronExpression("0 0 15 * * ?"); //3pm every day

    //schedule it
    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    scheduler.start();
    scheduler.scheduleJob(job, trigger);

在上面的例子中,我希望R总结1890年1月,1890年2月,1890年3月到2010年12月的所有降雨天数。我想我想要做的就是创造一个循环以求和值。我的输出文件应如下所示:

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

这么简单吗?

非常感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用dplyr获得一些令人愉悦的语法

library(dplyr)

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

答案 1 :(得分:0)

在某些情况下,将其转换为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