top\n()返回R中的所有行
下面是我的top\n()返回R中的所有行,r,dplyr,tidyverse,R,Dplyr,Tidyverse,下面是我的tibble的标题。我正在尝试使用top\n()命令查找r.squared最高的两个国家。为什么我得到的是整个数据帧而不是2行?感谢您的意见 head(model_p) country <fctr> r.squared <dbl> Algeria 0.9522064 Argentina 0.9843108 Australia 0.9830777 Austria 0.9866741 Bangladesh 0.9485248
tibble
的标题。我正在尝试使用top\n()
命令查找r.squared
最高的两个国家。为什么我得到的是整个数据帧而不是2行?感谢您的意见
head(model_p)
country
<fctr>
r.squared
<dbl>
Algeria 0.9522064
Argentina 0.9843108
Australia 0.9830777
Austria 0.9866741
Bangladesh 0.9485248
Belgium 0.9902805
dim(model_p)
[1] 77 2
model_p %>% top_n(n=2, wt=r.squared)
country
<fctr>
r.squared
<dbl>
Algeria 0.952206405
Argentina 0.984310769
Australia 0.983077726
Austria 0.986674082
Bangladesh 0.948524805
Belgium 0.990280511
Benin 0.963144992
Bolivia 0.992357210
Botswana 0.013649835
Brazil 0.994024334
...
1-10 of 77 rows
头部(型号p)
国家
r、 平方
阿尔及利亚0.9522064
阿根廷0.9843108
澳大利亚0.9830777
奥地利0.9866741
孟加拉国0.9485248
比利时0.9902805
仪表板集成模块(p型)
[1] 77 2
模型p%>%top(n=2,wt=r.squared)
国家
r、 平方
阿尔及利亚0.952206405
阿根廷0.984310769
澳大利亚0.98307726
奥地利0.986674082
孟加拉国0.948524805
比利时0.990280511
贝宁0.963144992
玻利维亚0.992357210
博茨瓦纳0.013649835
巴西0.994024334
...
第1-10行,共77行
如果您查看Tidyverse
的R文档,很明显top\n()
被slice.*
取代。这应该对你有用
mtcars %>%
slice_max(order_by = mpg, n = 2)
其中,order\u by=mpg
,根据mpg
对数据进行排序
编辑:
复习完你的问题后,我才意识到你在试图按照因子进行排序。将这些转换成数值,你就可以得到前N名。经过一些研究和其他人的建议,我理解了这个问题。早些时候,我的数据帧被分组了。我理解,如果数据帧用于以后的进一步分析,那么将其解组是一种很好的做法。因此,通过ungroup()管道传输数据帧效果很好
model_p <- model_p %>% ungroup()
model_p %>% top_n(wt=r.squared, n=2)
model\u p%ungroup()
模型p%>%top(重量=r.平方,n=2)
给定dplyr用slice_*()函数取代top_n()的策略,这两行可以是:
model_p <- model_p %>% ungroup()
model_p %>% slice_max(order_by=r.squared, n=2)
model\u p%ungroup()
模型p%>%切片最大值(订单=r.平方,n=2)
请以dput(head(x))
的形式提供一些数据,这样可以更方便地查看您的问题和发布答案。请看这里OP没有分组的是他的数据-至少这不是他提供的稀缺代码中出现的数据。因此,该链接,在这种情况下是没有用处的。谢谢你的答复。我试过建议的最大值的变化。最初,它带来了许多包兼容性问题。我已将我的R、RStudio、tidyverse(包括dplyr)更新为所有最新版本。此后slice_max开始工作,结果相同。而不是得到前2行,我得到了充分的tibble。另外,请注意排序是在r.squared上的,r.squared不是一个因子,不需要转换为数字。请再次阅读我的答案。您使用的是“因子”而不是“数字”