我有以下数据框:

df <- data.frame(aa = rep(1,4),
                ae = rep(2,4),
                dd = rep(3,4),
                `aa%` = rep(11,4),
                `ae%` = rep(22,4),
                `dd%` = rep(33,4))

  aa ae dd aa. ae. dd.
1  1  2  3  11  22  33
2  1  2  3  11  22  33
3  1  2  3  11  22  33
4  1  2  3  11  22  33

我想让这些列变成

  aa aa. ae ae. dd dd.
1  1  11  2  22  3  33
2  1  11  2  22  3  33
3  1  11  2  22  3  33
4  1  11  2  22  3  33

所以我做到了

library(dplyr)
library(gtools)
df %>%
  select(1, mixedorder(names(.)[-1]))

但这给了

  aa dd aa. ae ae.
1  1  3  11  2  22
2  1  3  11  2  22
3  1  3  11  2  22
4  1  3  11  2  22

如何获得具有所需列顺序的输出?

推荐答案

使用mixedsort而不是mixedorder

library(gtools)
library(dplyr)
df %>%
    select(mixedsort(names(.)))
   aa aa. ae ae. dd dd.
1  1  11  2  22  3  33
2  1  11  2  22  3  33
3  1  11  2  22  3  33
4  1  11  2  22  3  33


删除第一列后,mixedorder的问题是它返回一个从1开始的索引,而索引需要从2开始,即添加1

df %>%
   select(1, mixedorder(names(.)[-1])+1)
  aa aa. ae ae. dd dd.
1  1  11  2  22  3  33
2  1  11  2  22  3  33
3  1  11  2  22  3  33
4  1  11  2  22  3  33

R相关问答推荐

使用geom_segment()对y轴排序

使用sf或terra的LINESTRAING的累积长度

如何在geom_col中反转条

R—将各种CSV数字列转换为日期

以相同的方式对每个表进行排序

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

调换行/列并将第一行(原始数据帧的第一列)提升为标题的Tidyr类似功能?

有没有办法一次粘贴所有列

创建在文本字符串中发现两个不同关键字的实例的数据框

Data.table::Shift type=允许扩展数据(&Q;LAG&Q;)

对数据帧中的列进行子集设置以通过迭代创建新的数据帧

如何根据顺序/序列从数据框中排除值

使用相对风险回归计算RR

R Bupar:获取每个 case 的踪迹

使用for()循环将数据处理应用于数据集的所有行

我正在try 在R Studio中制作一张世界 map ,该 map 使用相对于数字变量的国家 colored颜色 填充

保存GggPlot对象以在不同数据集上使用

GGPLATE:如何从图例中删除特定的因素级别,同时仍然可以设置其 colored颜色 ?

用R实现抽象语法树的转换