我无法理解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
答案 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
排序的输出。