Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
top\n()返回R中的所有行_R_Dplyr_Tidyverse - Fatal编程技术网

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不是一个因子,不需要转换为数字。请再次阅读我的答案。您使用的是“因子”而不是“数字”