r - dplyr - 分组并选择 TOP x %

标签 r dplyr

使用包 dplyr 和函数 sample_frac可以从每个组中抽取一个百分比。我需要的是首先对每个组中的元素进行排序,然后从每个组中选择前 x%?

有一个功能top_n ,但这里我只能确定行数,而且我需要一个相对值。

例如以下数据按齿轮分组并按wt排序每组内:

library(dplyr)
mtcars %>%
  select(gear, wt) %>%
  group_by(gear) %>%
  arrange(gear, wt)

    gear    wt
1   3   2.465
2   3   3.215
3   3   3.435
4   3   3.440
5   3   3.460
6   3   3.520
7   3   3.570
8   3   3.730
9   3   3.780
10  3   3.840
11  3   3.845
12  3   4.070
13  3   5.250
14  3   5.345
15  3   5.424
16  4   1.615
17  4   1.835
18  4   1.935
19  4   2.200
20  4   2.320
21  4   2.620
22  4   2.780
23  4   2.875
24  4   3.150
25  4   3.190
26  4   3.440
27  4   3.440
28  5   1.513
29  5   2.140
30  5   2.770
31  5   3.170
32  5   3.570

现在我想在每个齿轮组中选择前 20%。

如果该解决方案可以与 dplyr 的 group_by 集成,那就太好了。功能。

最佳答案

或者 dplyr 的另一个选项:

mtcars %>% select(gear, wt) %>% 
  group_by(gear) %>% 
  arrange(gear, desc(wt)) %>% 
  filter(wt > quantile(wt, .8))

Source: local data frame [7 x 2]
Groups: gear [3]

   gear    wt
  (dbl) (dbl)
1     3 5.424
2     3 5.345
3     3 5.250
4     4 3.440
5     4 3.440
6     4 3.190
7     5 3.570

关于r - dplyr - 分组并选择 TOP x %,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220693/

相关文章:

r - 组合图时无法更改条形图的颜色

r - 使用字符串向量输入在 dplyr 中按多列进行分组

r - dplyr::failwith 不适用于 lme4::lmer 但适用于 lm

r - 如果在 R 中模拟后使用鼠标滚轮,Windows 7 将变得无响应

r - Foreach combine error, rbind all variables should have the same length...但他们这样做 [R]

r - 缺少日期时计算 14 天滚动平均值

从 Excel VBA 运行 R,无需 RExcel

R:如何将数据框附加到列表中?

python - Python 中的 plyr 或 dplyr

r - 在因子组合中添加缺失的行