如何从数据框中按顺序排名前n位公司

Tej*_*eja 10 sorting r top-n plyr

我试图从数据框架中获得顶级'n'公司.这是我的代码如下.

data("Forbes2000", package = "HSAUR")
sort(Forbes2000$profits,decreasing=TRUE)
Run Code Online (Sandbox Code Playgroud)

现在我想从这个有序向量中获得前50个观测值.

mne*_*nel 25

head并且tail是非常有用的功能!

head(sort(Forbes2000$profits,decreasing=TRUE), n = 50)
Run Code Online (Sandbox Code Playgroud)

如果你想要data.frame的前50行,那么你可以使用arrange函数from plyr来排序data.frame然后使用head

library(plyr)

head(arrange(Forbes2000,desc(profits)), n = 50)
Run Code Online (Sandbox Code Playgroud)

请注意,我profits在一个调用中包含desc它意味着它将按递减顺序排序.

没有plyr工作

head(Forbes2000[order(Forbes2000$profits, decreasing= T),], n = 50)
Run Code Online (Sandbox Code Playgroud)


GSe*_*See 9

使用order进行排序data.frame,然后使用head仅拿到第50行.

data("Forbes2000", package = "HSAUR")
head(Forbes2000[order(Forbes2000$profits, decreasing=TRUE), ], 50)
Run Code Online (Sandbox Code Playgroud)


小智 6

您可以使用rankdplyr.

    library(dplyr)
    top_fifty <- Forbes2000 %>%
         filter(rank(desc(profits))<=50)
Run Code Online (Sandbox Code Playgroud)

这会按降序对您的数据进行排序,并且仅保留排名小于或等于 50(即前 50)的值。
Dplyr 非常有用。命令和链接语法非常容易理解。10/10 会推荐。

  • 也可以使用“top_n(n = 50, wt =profits)”代替“filter(...)” (2认同)