在R语言中基于列名数值调整数据框列顺序的实现方法
按列名数值排序数据框列的解决方案
针对你的需求,我们可以通过以下两种方式实现:
方法1:基础R原生实现
无需额外安装包,直接通过列名处理和排序完成:
# 提取需要排序的目标列名(排除id和raw_score) target_cols <- setdiff(names(df), c("id", "raw_score")) # 将列名转为数值类型后排序 sorted_target_cols <- target_cols[order(as.numeric(target_cols))] # 重新构造排序后的数据框 df_sorted <- df[, c("id", "raw_score", sorted_target_cols)] # 查看结果 df_sorted
执行后输出:
id raw_score 2.1 2.2 2.3 1 1 10 4 1 2 2 2 20 6 1 3 3 3 30 7 1 4
方法2:tidyverse/dplyr风格实现
如果你常用tidyverse工具链,可以用更简洁的管道语法完成:
library(dplyr) df_sorted <- df %>% select(id, raw_score, sort(setdiff(names(.), c("id", "raw_score"))))
这段代码会直接返回排序后的结果,和方法1效果完全一致。
内容的提问来源于stack exchange,提问作者amisos55
相关产品推荐
相关产品推荐

