You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中按列名后缀模式重新排列数据框列的方法

R语言灵活重排DataFrame列:按前缀配对月份列

基础R解决方案

无需额外依赖包,通过字符串处理生成目标列顺序:

# 提取列名的前缀(下划线前的部分)
prefixes <- unique(sub("_.*", "", colnames(df)))

# 生成每个前缀对应的目标列对:先February后September
new_col_order <- unlist(lapply(prefixes, function(p) {
  c(paste0(p, "_February"), paste0(p, "_September"))
}))

# 重排DataFrame列
df_reordered <- df[, new_col_order]

说明:

  • sub("_.*", "", colnames(df)) 会去掉每个列名中_及之后的内容,提取出colA、colB这类前缀;
  • 遍历每个前缀,拼接出对应的prefix_February和prefix_September列名,确保顺序符合需求;
  • 最后用生成的列名向量索引原DataFrame,完成重排。

tidyverse解决方案

利用dplyr、stringr和purrr包的工具,代码更简洁可读:

library(dplyr)
library(stringr)
library(purrr)

# 提取所有唯一的列前缀
prefixes <- colnames(df) %>% 
  str_extract("^[^_]+") %>% 
  unique()

# 按前缀分组选择列,强制按February→September的顺序排列
df_reordered <- df %>%
  select(map(prefixes, ~c(paste0(., "_February"), paste0(., "_September"))) %>% flatten_chr())

说明:

  • str_extract("^[^_]+") 同样用于提取下划线前的前缀;
  • map 遍历每个前缀,生成固定顺序的列名对,避免受原列顺序影响;
  • flatten_chr 将列表转换为字符向量,作为select的参数完成列重排。

内容的提问来源于stack exchange,提问作者martinim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:05:39