使用dplyr按所有列排列数据帧
我正在生成1和0的数据帧,如下所示: 图书馆管理员 图书馆胶水 数值变量% set_namesgluevar{seq_lennum_var}%>% 展开.grid%>% mutatetotal=行总和%>% 选择总计,所有内容%>% 排列总计、描述变量1、变量2、变量3 >总风险1风险2风险3 > 1 0 0 0 0 > 2 1 1 0 0 > 3 1 0 1 0 > 4 1 0 0 1 > 5 2 1 1 0 > 6 2 1 0 1 > 7 2 0 1 1 > 8 3 1 1 1 由v0.1.1.9000于2018年1月8日创建 我需要按变量的总和按升序排列,然后按降序排列每个变量。使用dplyr::arrange,这相当简单。不过,我希望有一个更稳健的安排方法。例如,如果num_var更改为,则最后一行也必须更改为arrangetotal、descvar_1、var_2、var_3、var_4。我曾尝试使用tidy selector来安排一切,就像我使用select函数一样,但出现以下错误: 图书馆管理员 图书馆胶水 数值变量% set_namesgluevar{seq_lennum_var}%>% 展开.grid%>% mutatetotal=行总和%>% 选择总计,所有内容%>% 安排总数,描述一切 >排列导入数据中出错,点:评估错误:未注册tidyselect变量。 由v0.1.1.9000于2018年1月8日创建 有没有一种方法可以在不直接命名的情况下选择用于排列的变量?arrange似乎无法直接使用select helper函数。您可以使用arrange_at、total以升序排列,以及除total select之外的其他变量,使用-one_of total以降序排列:使用dplyr按所有列排列数据帧,r,dplyr,tidyverse,tidyselect,R,Dplyr,Tidyverse,Tidyselect,我正在生成1和0的数据帧,如下所示: 图书馆管理员 图书馆胶水 数值变量% set_namesgluevar{seq_lennum_var}%>% 展开.grid%>% mutatetotal=行总和%>% 选择总计,所有内容%>% 排列总计、描述变量1、变量2、变量3 >总风险1风险2风险3 > 1 0 0 0 0 > 2 1 1 0 0 > 3 1 0 1 0 > 4 1 0
arrange_at(vars(total, desc(-one_of("total"))))
# total var_1 var_2 var_3
#1 0 0 0 0
#2 1 1 0 0
#3 1 0 1 0
#4 1 0 0 1
#5 2 1 1 0
#6 2 1 0 1
#7 2 0 1 1
#8 3 1 1 1
可以使用此代码按从左到右的每列排列
library(magrittr) ; library(rlang) ; library(dplyr)
data %>% arrange(!!!syms(colnames(.)))
这是因为arrange不接受tidyselect语法,因此必须为每个名称传递符号或字符串