top_n与r中的顺序

时间:2017-01-25 11:28:45

标签: r dplyr

我无法理解dplyr的top_n函数的输出。有人可以帮忙吗?

n=10

df = data.frame(ref=sample(letters,n),score=rnorm(n))

require(dplyr)

print(dplyr::top_n(df,5,score))

print(df[order(df$score,decreasing = T)[1:5],])

top_n的输出未按照我的预期按照分数排序。与使用order函数

进行比较
 ref      score
1   i 0.71556494
2   p 0.04463846
3   v 0.37290990
4   g 1.53206194
5   f 0.86307107
   ref      score
7    g 1.53206194
10   f 0.86307107
1    i 0.71556494
6    v 0.37290990
4    p 0.04463846

我读过的文档还暗示top_n结果应该由指定的列排序,例如

https://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf

2 个答案:

答案 0 :(得分:1)

两个输出都相同,但top_n没有重新排列行。

您可以使用df[order(df$score,decreasing = T)[1:5],]

获得与arrange()相同的结果
top_n(df, 5, score) %>% arrange(desc(score))

翻转排序,df[order(df$score,decreasing = F)[1:5],]相当于top_n(df, -5, score) %>% arrange(score)

答案 1 :(得分:0)

我的误解和期望是由于我阅读了与问题相关并在评论中描述的文档。尽管有一些文档声明,但top_n未生成按wt排序的输出。