【问题标题】:calculating seasonal range in r for a number of years计算 r 中多年的季节范围
【发布时间】:2015-06-01 18:24:17
【问题描述】:

我有一个跨越 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)})

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

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

【问题讨论】:

  • 应用或应用函数?我确信有一种很棒的功能性单线方法。
  • 试试library(dplyr);dat %>% group_by(year=year(dt)) %>% summarise= Max= max(speed), Min=min(speed)) 或者可能是dat %>% group_by(year=year(dt)) %>% summarise(Range= toString(round(range(speed),2)))

标签: r


【解决方案1】:

试试

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)))

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 2020-01-31
    • 2021-11-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    相关资源
    最近更新 更多