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

在R中使用ifelse将dataframe的stage o-x数据修改为stage o的方法

R实现数据框内stage格式批量替换的方法

核心思路

你要实现的格式转换本质是提取stage 后第一个数字的部分,丢弃-及后面的内容,用正则匹配+替换可以实现,如需结合ifelse做格式合法性判断,可参考以下代码:

完整可运行代码

# 初始构造数据框
x = c("stage 1-1", "stage 2-2", "stage 3-2")
y = c("stage 1-1", "stage 1-2", "stage 2-2")
z = c("stage 3-2", "stage 2-1", "stage 3-4")
df <- data.frame(x, y, z, stringsAsFactors = FALSE)

# 批量处理所有列
df[] <- lapply(df, function(col) {
  # ifelse判断:符合stage o-x格式才替换,否则保留原值
  ifelse(grepl("^stage \\d+-\\d+$", col), 
         sub("(stage \\d+)-\\d+", "\\1", col), 
         col)
})

代码说明

  • grepl("^stage \\d+-\\d+$", col):判断每个值是否严格匹配stage 数字-数字的格式,避免误改其他不符合格式的内容
  • sub("(stage \\d+)-\\d+", "\\1", col):正则捕获stage 加第一个数字的部分,替换掉整个原字符串,实现只保留stage o的需求
  • 用lapply遍历数据框所有列,不用逐个修改x/y/z列,列数多的时候也适用

运行后打印df即可看到所有值都已经完成转换,例如原stage 3-4会自动修改为stage 3。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:12:02