Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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
如何基于last_col()获取顶级值,然后在R中排列?_R_Tidyverse - Fatal编程技术网

如何基于last_col()获取顶级值,然后在R中排列?

如何基于last_col()获取顶级值,然后在R中排列?,r,tidyverse,R,Tidyverse,我正试图在最新日期前获得拥有最多新冠病毒病例的前20个国家。数据格式为宽格式,最新日期为最后一列 在代码中,没有使用desc,因为它无论如何都会给出错误,但一旦它工作,就会使用 奇怪的是,top\u n默认情况下不会自行排序,因为top n表示从顶部开始排序,因此理想情况下,它应该自行进行降序排序。使用arrange时,我们可以使用Cross而不是使用select进行子集设置,因为arrange正在查找未加引号的列名而不是完整的列值 library(dplyr) library(covid19.

我正试图在最新日期前获得拥有最多新冠病毒病例的前20个国家。数据格式为宽格式,最新日期为最后一列

在代码中,没有使用desc,因为它无论如何都会给出错误,但一旦它工作,就会使用

奇怪的是,top\u n默认情况下不会自行排序,因为top n表示从顶部开始排序,因此理想情况下,它应该自行进行降序排序。

使用arrange时,我们可以使用Cross而不是使用select进行子集设置,因为arrange正在查找未加引号的列名而不是完整的列值

library(dplyr)
library(covid19.analytics)
top_n(df, n =20, wt = df %>%
           select(last_col())) %>%
    arrange(across(last_col()))
它也可以写成

top_n(df, n = 20, wt = !! rlang::sym(names(df)[ncol(df)])) %>% 
        arrange(across(last_col()))
注意:如果我们不想重复'df',我们可以使用.,但是。当我们有一个%>%链来指定来自%>%lhs的数据时,通常使用。另一个选项是cur_数据


感谢@akrun展示了这两种解决方案,并且效果良好。我想我会坚持到底,因为朗把我弄糊涂了。它不让我在一定期限内接受答案,只要它让我接受,我就会接受。再次感谢@ViSa基于我的dplyr版本,它返回20行top\u ndf,n=20,wt=df%>%selectlast\u col%>%nrow[1]20@ViSa区别在于你正在使用。而不是df。当您使用%>%链接时使用。是的,正在工作。这是我的错。我试着用替换df。并为top_ndf获得更多行,n=20,wt=.%>%选择最后一列。您的解决方案有效!!好的,我不知道cur_数据,我肯定也会尝试。谢谢你帮助我:
library(dplyr)
library(covid19.analytics)
top_n(df, n =20, wt = df %>%
           select(last_col())) %>%
    arrange(across(last_col()))
top_n(df, n = 20, wt = !! rlang::sym(names(df)[ncol(df)])) %>% 
        arrange(across(last_col()))
top_n(df, n =20, wt = cur_data() %>% 
          select(last_col())) %>%
 nrow
#[1] 20