R语言如何重排数据框列使相似名称列相邻并添加分隔空列
解决方案
以下是基于Base R的实现,不需要额外安装依赖包:
# 按前缀筛选并列名按后缀序号排序 live_cols <- sort(grep("^live\\.", names(df), value = TRUE)) dead_cols <- sort(grep("^dead\\.", names(df), value = TRUE)) total_cols <- sort(grep("^total\\.", names(df), value = TRUE)) # 插入两个分隔空列,默认填充NA,可按需修改为其他值 df$sep1 <- NA df$sep2 <- NA # 自定义列顺序重组数据框 df_final <- df[, c(live_cols, "sep1", dead_cols, "sep2", total_cols)] # 可选:将分隔列的列名改为空,视觉上更像分隔符 names(df_final)[names(df_final) %in% c("sep1", "sep2")] <- ""
实现逻辑说明
- 用正则匹配
^前缀\\.精准筛选对应分组的列,避免匹配到其他含相同字符的列 sort()直接对列名字符串排序,默认就会按后缀数字从小到大排列,兼容后续序号扩展到多位数的场景- 插入的空列可按需调整填充值,比如要填0就把
NA改为0,要填空字符串就改为"" - 最后一步列顺序重组完全按照指定的分组规则,不会受原数据列顺序影响
内容的提问来源于stack exchange,提问作者Osidaksjdm W
相关产品推荐
相关产品推荐

