Как мне отфильтровать свои данные по верхнему 50-му процентилю для отдельной зависимой переменной?

#r

Вопрос:

Мне нужно разделить свои данные так, чтобы при использовании facet_wrap у меня были верхние 50 процентилей за каждый год. Вот образец моих данных:

 # A tibble: 10,519 x 3
   Species                 Abundance Year 
   <chr>                       <dbl> <chr>
 1 Astropecten irregularis         2 2009 
 2 Asterias rubens                14 2009 
 3 Echinus esculentus              1 2009 
 4 Pagurus prideaux                1 2009 
 5 Raja clavata                    1 2009 
 6 Astropecten irregularis         4 2009 
 7 Asterias rubens                47 2009 
 8 Henricia sp.                    2 2009 
 9 Ophiura ophiura                 8 2009 
10 Solaster endeca                 1 2009 
# ... with 10,509 more rows
 

Моя нынешняя стратегия такова:

 Data <- All_years %>%
  group_by(Species, Year) %>%
  summarise(Abundance = sum(Abundance, na.rm = TRUE)) %>%
  filter(quantile(Abundance, 0.50)<Abundance) %>%
  filter(Abundance > 50)
 

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

Комментарии:

1. Я думаю, что вы можете просто summarise заменить mutate здесь (а затем ungroup() , чтобы фильтры применялись по группам), чтобы сохранить все наблюдения.

2. Это, безусловно, дало более развернутые результаты, спасибо.