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