我想使用包含年、日和降雨量值的数据框来计算一些降雨指数。
如何计算最大5天连续降水量(R5d)? 最多连续降雨天数(降雨量大于0毫米)? 最多连续无降雨天数(降雨量 0 毫米)? 年总降雨量超过 95%?
我尝试了以下 R5d 代码,但它不起作用,因为它对从 1 到 5、从 6 到 10 等的天数求和。 我想要第 1 到 5 天、第 2 到 6 天、第 3 到 7 天等等的总和。
year=c(rep(2000,360),rep(2001,360))
day=rep(1:360,2)
rainfall<-rpois(360*2,0:100)
df5=data.frame(year,day,rainfall)
head(df5)
#Sum values 5 by 5
library(dplyr)
sum5=df5 %>%
mutate(Intervals_by5 = rep(row_number(), each=5, length.out = n())) %>%
group_by(Intervals_by5) %>%
summarise(Freq_sum = sum(rainfall))
max(sum5)
非常感谢!
您可以使用滑动窗口:
library(dplyr)
library(slider)
year <- c(rep(2000, 360), rep(2001, 360))
day <- rep(1:360, 2)
rainfall <- rpois(360 * 2, 0:100)
df5 <- data.frame(year, day, rainfall)
new_df <- df5 %>%
mutate(sliding_sum = slide_dbl(rainfall, sum, .before = 4, .complete = TRUE))
head(new_df, 30)
#> year day rainfall sliding_sum
#> 1 2000 1 0 NA
#> 2 2000 2 0 NA
#> 3 2000 3 6 NA
#> 4 2000 4 2 NA
#> 5 2000 5 4 12
#> 6 2000 6 8 20
#> 7 2000 7 2 22
#> 8 2000 8 8 24
#> 9 2000 9 8 30
#> 10 2000 10 9 35
#> 11 2000 11 6 33
#> 12 2000 12 9 40
#> 13 2000 13 6 38
#> 14 2000 14 7 37
#> 15 2000 15 9 37
#> 16 2000 16 20 51
#> 17 2000 17 18 60
#> 18 2000 18 22 76
#> 19 2000 19 14 83
#> 20 2000 20 23 97
#> 21 2000 21 21 98
#> 22 2000 22 20 100
#> 23 2000 23 18 96
#> 24 2000 24 19 101
#> 25 2000 25 19 97
#> 26 2000 26 29 105
#> 27 2000 27 27 112
#> 28 2000 28 26 120
#> 29 2000 29 32 133
#> 30 2000 30 28 142
创建于 2024-03-23,使用 reprex v2.1.0