我有以下数据集:

df <- structure(list(a3_1_1 = 0, a3_1_2 = 0, a3_1_3 = 0, a3_1_4 = 0, 
    a3_1_5 = 0, a3_1_6 = 0, a3_1_7 = 0, a3_1_8 = 0, a3_1_9 = 0, 
    a3_1_10 = 0, a3_1_11 = 0, a3_1_12 = 0, a3_1_13 = 0, a3_1_14 = 0, 
    a3_1_15 = 0, a3_1_16 = 0, a3_1_17 = 0, a3_2_1 = 0, a3_2_2 = 0, 
    a3_2_3 = 0, a3_2_4 = 0, a3_2_5 = 0, a3_2_6 = 0, a3_2_7 = 0, 
    a3_2_8 = 0, a3_2_9 = 0, a3_2_10 = 0, a3_2_11 = 0, a3_2_12 = 0, 
    a3_2_13 = 0, a3_2_14 = 0, a3_2_15 = 0, a3_2_16 = 0, a3_2_17 = 0, 
    a3_3_1 = 0, a3_3_2 = 0, a3_3_3 = 0, a3_3_4 = 0, a3_3_5 = 0, 
    a3_3_6 = 0, a3_3_7 = 0, a3_3_8 = 0, a3_3_9 = 0, a3_3_10 = 0, 
    a3_3_11 = 0, a3_3_12 = 0, a3_3_13 = 0, a3_3_14 = 0, a3_3_15 = 0, 
    a3_3_16 = 0, a3_3_17 = 0), row.names = c(NA, -1L), class = "data.frame")

我有许多变量是表的一部分,具有相同变量名称的数字模式.我正在寻找一定的安排:第二个号码应该被安排为最后一个号码内的一个组.这样,我想创建一个函数,将第一个和最后一个变量作为参数,并以这种方式排列它们.所需的输出应该是这样的:

ordered_df <- structure(list(a3_1_1 = 0, a3_2_1 = 0, a3_3_1 = 0, a3_1_2 = 0, 
    a3_2_2 = 0, a3_3_2 = 0, a3_1_3 = 0, a3_2_3 = 0, a3_3_3 = 0, 
    a3_1_4 = 0, a3_2_4 = 0, a3_3_4 = 0, a3_1_5 = 0, a3_2_5 = 0, 
    a3_3_5 = 0, a3_1_6 = 0, a3_2_6 = 0, a3_3_6 = 0, a3_1_7 = 0, 
    a3_2_7 = 0, a3_3_7 = 0, a3_1_8 = 0, a3_2_8 = 0, a3_3_8 = 0, 
    a3_1_9 = 0, a3_2_9 = 0, a3_3_9 = 0, a3_1_10 = 0, a3_2_10 = 0, 
    a3_3_10 = 0, a3_1_11 = 0, a3_2_11 = 0, a3_3_11 = 0, a3_1_12 = 0, 
    a3_2_12 = 0, a3_3_12 = 0, a3_1_13 = 0, a3_2_13 = 0, a3_3_13 = 0, 
    a3_1_14 = 0, a3_2_14 = 0, a3_3_14 = 0, a3_1_15 = 0, a3_2_15 = 0, 
    a3_3_15 = 0, a3_1_16 = 0, a3_2_16 = 0, a3_3_16 = 0, a3_1_17 = 0, 
    a3_2_17 = 0, a3_3_17 = 0), row.names = c(NA, -1L), class = "data.frame")

我正在寻找的解决方案应该使用dplyr::arrange,但我显然愿意接受建议.

my_arranger <- function(df, from = col1, to = col2){
df %>% arrange({{col1}}:{{col2}}) #Here should make the above requested arrangement
}

推荐答案

您可以try 下面的代码

nms <- names(df)

d2 <- as.integer(gsub(".*_(\\d+)_.*", "\\1", nms))
d3 <- as.integer(gsub(".*_(\\d+)$", "\\1", nms))

nms[order(d3, d2)]

R相关问答推荐

了解.groups的目的= dØr的摘要功能中的删除

使用facet_wrap()时如何将面板标题转换为脚注?

如何创建具有总计列和ggplot 2所有条线的百分比标签的堆叠条形图?

将模拟变量乘以多个观测结果中的模拟变量

从开始时间和结束时间导出时间

bslib::card_header中的shine::downloadButton,图标而不是文本

如何直接从R中的风险分数计算c指数?

在GGPLATE中将突出的点放在前面

如何改变x轴比例的列在面

IMF IFS数据以R表示

如果可能,将数字列转换为整数,否则保留为数字

Geom_Hline将不会出现,而它以前出现了

将标识符赋给事件序列,避免错误观察

使用shiny 中的所选要素行下拉菜单

如何使用字符串从重复的模式中提取多个数字?

如何使用FormC使简单算术运算得到的数字是正确的?

使用ifElse语句在ggploy中设置aes y值

如何显示准确的p值而不是<;0.001*?

有毒元素与表观遗传年龄的回归模型

排序R矩阵的行和列