我有温度数据,我希望每年有这个条件(Temp> Tmax)连续4天的数量。 有关说明性示例,请考虑以下5列数据框: “站温年月日”
答案 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
如果您希望每年获得此值,则需要按年度对数据进行分区。处理多年的开始和结束时要小心。例如,如果“热浪”在一年结束时开始并在下一年开始时结束。它们中的任何一个都不计算在内。