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

如何在R语言dataframe行名中增删指定字符串或数字

R语言DataFrame行名自定义调整方案

R处理数据框时,行名的增删改不需要依赖第三方包,用基础R的字符串处理函数就能完成,以下分两类常见场景给出实现方法。

场景1:删除行名中的冗余字符

先以题述需求为例,原始行名如下:

Patient 01 On
Patient 02 PRE
Patient 03 
Patient 04 PRE

目标是去掉数字前的前导0,同时清除末尾多余空格,得到如下结果:

Patient 1 On
Patient 2 PRE
Patient 3
Patient 4 PRE

实现步骤

  1. 先构造测试数据复现场景
# 构造测试数据框
df <- data.frame(val = c(12, 15, 9, 18))
rownames(df) <- c("Patient 01 On", "Patient 02 PRE", "Patient 03 ", "Patient 04 PRE")
  1. 用正则替换+首尾空格清理完成修改
# 正则匹配「空格+0+单个数字」结构,去掉冗余前导0,再清除首尾多余空格
rownames(df) <- trimws(gsub(pattern = " 0(\\d)", replacement = " \\1", x = rownames(df)))
  1. 查看处理结果
rownames(df)
# [1] "Patient 1 On"  "Patient 2 PRE" "Patient 3"     "Patient 4 PRE"

其他常见删除需求可以直接调整正则规则实现:

  • 删除行尾固定字符:比如要去掉所有行名末尾的PRE,用gsub("PRE$", "", rownames(df)),$代表匹配字符串末尾位置
  • 删除行内固定关键词:比如要删掉所有行名里的Patient ,直接用gsub("Patient ", "", rownames(df))即可

场景2:向行名添加指定字符串/数字

这是删除操作的反向需求,用字符串拼接函数paste0()就能快速实现,常见用法如下:

  • 统一添加前缀:比如给所有行名前面加分组标记GroupA_
rownames(df) <- paste0("GroupA_", rownames(df))
# 处理结果:"GroupA_Patient 1 On" "GroupA_Patient 2 PRE" ...
  • 统一添加后缀:比如给所有行名末尾加批次标记_Batch2024
rownames(df) <- paste0(rownames(df), "_Batch2024")
# 处理结果:"Patient 1 On_Batch2024" "Patient 2 PRE_Batch2024" ...
  • 按行顺序添加序号:比如给每行按顺序追加_1、_2格式的序号
rownames(df) <- paste0(rownames(df), "_", seq_along(rownames(df)))
# 处理结果:"Patient 1 On_1" "Patient 2 PRE_2" "Patient 3_3" ...

小提示:如果行名存在大量不规则的多余空格,所有操作前可以先用trimws(rownames(df))统一清理首尾空格,能避免大部分正则匹配失效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:15:50