首页 > 解决方案 > 如何在 R 中通过分组操作应用多个条件过滤器?

问题描述

我有以下名为“数据”的数据框

在此处输入图像描述

我只想获取实际折扣值与折扣值比较并采用更高密封值的那些行。如果实际折扣高于型号RTD9的折扣,则应采用最高的折扣密封。

我的最终输出数据框应如下所示(上面的数据框中为黄色),

在此处输入图像描述

标签: rdataframedplyr

解决方案


我们可以findInterval用来获取最近的区间

library(dplyr)

df %>%
  group_by(Model) %>%
  slice(if(any(Discount > ActualDiscount))  
          which.max(findInterval(Discount, first(ActualDiscount))) else 
          which.max(Discount - ActualDiscount))

#  Model Level Discount ActualDiscount
#  <fct> <int>    <dbl>          <dbl>
#1 BD56      1     21             20  
#2 HT67      2     25             24  
#3 KJ90      3     33             32  
#4 RTD9      3     33.7           35.5
#5 YT61      5     33             32.5

推荐阅读