Как рассчитать / посчитать количество экстремальных осадков (выше «порога») по данным суточных осадков за каждый месяц в год - PullRequest
0 голосов
/ 05 июня 2018

Я работаю с данными о суточных осадках и пытаюсь оценить экстремальные явления на основе данных временных рядов, превышающих определенное пороговое значение в каждом месяце в году, т. Е. Сколько раз количество осадков превышало определенный порог в каждом месяце в году.

Данные временных рядов осадков взяты из Сент-Люсии и имеют два столбца:

1) "YEARMODA" - определение времени (формат- ГГГГММДД)

2) "PREP" -количество осадков в мм (числовое)

StLucia <- read_excel("C:/Users/hp/Desktop/StLuciaProject.xlsx")

В кадре данных, над которым я работаю, например, "Precip1", есть два столбца, а именно:

1) Время (формат ГГГГ-ММ-ДД)

2) Осадки (числовое значение)

Код приведен ниже:

StLucia$YEARMODA <- as.Date(as.character(StLucia$YEARMODA), format = "%Y%m%d")

data1 <- na.ma(StLucia$PREP, k=4, weighting = "exponential")

Precip1 <- data.frame(Time= StLucia$YEARMODA, Precipitation= data1, check.rows = TRUE)

Я нашел пороговое значение на основе 95-го и 99-го процентиля с использованием функции quantile().

Теперь я хочу посчитать количество «экстремальных явлений» осадков выше этого порога в каждом месяце в годовом исчислении.

Пожалуйста, помогите мне в этом.Я был бы очень признателен вашей помощью.Спасибо!

1 Ответ

0 голосов
/ 05 июня 2018

Если вы открыты для метода tidyverse, вот пример с набором данных economics, который встроен в ggplot2.Мы можем использовать ntile, чтобы назначить процентильную группу каждому наблюдению.Затем мы group_by год и получаем количество значений в желаемых процентилях.Поскольку это месячные данные, их количество довольно низкое, но их легко перевести на ежедневные данные.

library(tidyverse)
thresholds <- economics %>%
  mutate(
    pctile = ntile(unemploy, 100),
    year = year(date)
    ) %>%
  group_by(year) %>%
  summarise(
    q95 = sum(pctile >= 95L),
    q99 = sum(pctile >= 99L)
    )
arrange(thresholds, desc(q95))
#> # A tibble: 49 x 3
#>     year   q95   q99
#>    <dbl> <int> <int>
#>  1  2010    12     6
#>  2  2011    12     0
#>  3  2009    10     5
#>  4  1967     0     0
#>  5  1968     0     0
#>  6  1969     0     0
#>  7  1970     0     0
#>  8  1971     0     0
#>  9  1972     0     0
#> 10  1973     0     0
#> # ... with 39 more rows

Создано в 2018-06-04 пакетом представлением (v0.2.0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...