计算r中的季节范围多年

时间:2015-06-01 18:24:18

标签: r

我有一个跨越20年的日常温度测量数据框。我想计算每年数据系列的年度范围(即最终得到20个值,代表每年的范围)。示例数据:

begin_date = as.POSIXlt("1990-01-01", tz = "GMT")
dat = data.frame(dt = begin_date + (0:(20*365)) * (86400))
dat = within(dat, {speed = runif(length(dt), 1, 10)})

我正在考虑编写一个循环,每年经历一次,然后计算范围,但希望有另一个解决方案。

我认为最好的方法是每年获得最大值和最小值,然后计算范围。任何人都可以建议一种方法来做到这一点,而无需编写循环,每年单独进行?

1 个答案:

答案 0 :(得分:0)

尝试

library(dplyr)
dat %>% 
    group_by(year=year(dt)) %>% 
    summarise(Range=diff(range(speed)))

或者

library(data.table)
setDT(dat)[, list(Range=diff(range(speed))), year(dt)]

或者

aggregate(speed~cbind(year=year(dt)), dat, function(x) diff(range(x)))