【发布时间】:2021-02-27 00:06:44
【问题描述】:
我有一个数据框 (precipitation),其中的列将不同的分组变量与每个样本(时间序列中的点)相关联:
Date Precipitation Year Month Season
<S3: POSIXct> <dbl> <dbl> <ord> <fctr>
1 1970-12-31 18:00:00 0.1900503 1970 December Autumn
2 1971-01-01 18:00:00 0.4749126 1971 January Winter
3 1971-01-02 18:00:00 6.1823234 1971 January Winter
4 1971-01-03 18:00:00 2.7953697 1971 January Winter
5 1971-01-04 18:00:00 2.6522014 1971 January Winter
6 1971-01-05 18:00:00 8.7417027 1971 January Winter
我想根据多个阈值分组过滤此数据框,按分组计算。阈值汇总在生成的数据框中,如下所示:
percentile <- groupwisePercentile(Precipitation ~ Season, data = precipitation, tau = 0.9)
percentile
Season n tau Percentile
<fctr> <int> <dbl> <dbl>
Autumn 4509 0.9 5.19
Spring 4520 0.9 3.47
Summer 4508 0.9 6.01
Winter 4513 0.9 4.32
我不知道如何引用此数据框中的值来过滤数据框precipitation groupwise,例如在 dplyr 中使用group_by 后跟filter。现在我正在使用一种非常不优雅的方法,当涉及到具有更多级别的分组时,这种方法也非常费力:我将过滤后的表的子集连接起来,手动输入来自数据框percentile 的值,如下所示:
filtered_winter <- precipitation %>%
filter(Season == "Winter") %>%
filter(Precipitation >= 4.32)
那对于每个组,然后我绑定它们:
events <- rbind(filtered_winter,filtered_spring,filtered_summer,filtered_autumn)
如何使用优雅的方法生成相同的表,即按组过滤,每个组具有不同的阈值?
【问题讨论】: