Use dplyr::slice_min()
and dplyr::slice_max()
.
library(dplyr)
library(magrittr)
df <- read.table(text = "id val1 val2 vt
1 14 12 19
2 13 13 12
3 12 12 13
4 12 13 13
5 12 14 22
6 12 12 14
7 12 13 14
8 12 14 12
9 13 13 14
10 13 14 14
11 14 14 14
12 13 14 17
13 13 14 31
14 13 13 14
15 13 14 13
16 13 14 23
", header = TRUE)
df %>% slice_max(order_by = vt, prop = 0.25)
# id val1 val2 vt
# 1 13 13 14 31
# 2 16 13 14 23
# 3 5 12 14 22
# 4 1 14 12 19
df %>% slice_min(order_by = vt, prop = 0.45)
# id val1 val2 vt
# 1 2 13 13 12
# 2 8 12 14 12
# 3 3 12 12 13
# 4 4 12 13 13
# 5 15 13 14 13
# 6 6 12 12 14
# 7 7 12 13 14
# 8 9 13 13 14
# 9 10 13 14 14
# 10 11 14 14 14
# 11 14 13 13 14
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…