计算数据中具有相同条件的连续日数

时间:2014-05-21 16:21:00

标签: r

我有温度数据,我希望每年有这个条件(Temp> Tmax)连续4天的数量。 有关说明性示例,请考虑以下5列数据框: “站温年月日”

1 个答案:

答案 0 :(得分:3)

假设:

  • 数据框df 在研究的时间段内每天都有完整的记录
  • df$Temp具有温度的字段
  • 要在min_temp 中测试的最低温度
  • df$Temp > min_temp
  • min_days,最短连续天数

这将产生该时间段内的“热浪”数量:

count.heat.waves <- function(df, min_temp, min_days) {
  sum(with(rle(df$Temp > min_temp), values & lengths >= min_days))
}

例如:

data(airquality)
count.heat.waves(airquality, 70, 4)  # yields 3

如果您希望每年获得此值,则需要按年度对数据进行分区。处理多年的开始和结束时要小心。例如,如果“热浪”在一年结束时开始并在下一年开始时结束。它们中的任何一个都不计算在内。