仅包括列的第n个最高值的子集数据框 [英] Subset data frame to only include the nth highest value of a column
本文介绍了仅包括列的第n个最高值的子集数据框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
library(plyr)
abc <- arrange(abc, z)
abc <- abc[n,]
但是,有没有一种方法可以在不首先对数据帧进行排序的情况下做到这一点?我之所以这么问,只是因为在较大的数据帧上订购似乎成本较高。
以下是要使用的示例df:
x y z
1 2 1 111
2 3 2 112
3 4 3 113
4 5 4 114
5 6 5 115
6 7 6 116
7 8 7 117
8 9 8 118
9 10 9 119
10 11 10 120
推荐答案
您可以尝试
library(dplyr)
n <- 7
slice(abc, rank(z)[n])
或者正如@Nicola评论的那样,base R
选项将是
abc[rank(abc$z)==n,]
更新
如果您想要排名最高的第n位
slice(abc, rank(-z)[n])
# x y z
#1 5 4 114
abc[nrow(abc)-rank(abc$z)+1==n,]
# x y z
#4 5 4 114
这篇关于仅包括列的第n个最高值的子集数据框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文