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

合并小表后如何保留DataFrame原始列名(去除.x/.y类后缀)

解决合并DataFrame后列名带.x/.y后缀的问题

要统一将带.x、.y、.x.x、.y.y这类后缀的列名还原为原始名称,只需用正则表达式批量替换列名即可,具体实现如下:

# 原始数据(R会自动处理重复列名,添加序号后缀)
data <- data.frame(part=c("DD","MM","TT"),
                   Team1 = c("kamal", "vimal", "shamal"),
                   "names.x" = c(45,23,35),
                   Team2 = c("kamal", "vimal", "shamal"),
                   "names.y" = c(46,24,36),
                   Team3 = c("kamal", "vimal", "shamal"),
                   "names.x.x" = c(47,25,37),
                   Team2 = c("kamal", "vimal", "shamal"),
                   "names.y.y" = c(48,26,38),
                   age = c(45,23,35),
                   weight = c(50,34,42))

# 批量去除列名中所有以.开头的后缀
colnames(data) <- gsub("\\..*", "", colnames(data))

# 查看修改后的列名
colnames(data)
# 输出结果:"part"   "Team1"  "names"  "Team2"  "names"  "Team3"  "names"  "Team2"  "names"  "age"    "weight"

代码说明

gsub("\\..*", "", colnames(data)) 的作用是:

  • \\. 匹配列名中的点号(需转义,因为.在正则表达式中是通配符)
  • .* 匹配点号后面的任意字符(包括多个点号和后续内容)
  • 整体效果是清空列名中第一个点号及其后面的所有内容,只保留原始列名前缀

执行后,所有names.x、names.y、names.x.x、names.y.y都会被统一改为names,其他列名(如part、age、weight)保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:13:19