Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

dplyr - How to get top n % and button n% in data frame in R


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...