我试图将每日降雨量值总计为每月总数超过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
这么简单吗?
非常感谢。
答案 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