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

如何在R数据框中将所有0 (0.00%)格式的内容替换为0

解决方案

你使用str_replace_all未生效的常见原因是没有批量应用到所有Grade开头的目标列,或者正则匹配时没有处理特殊字符,以下是两种可行方案:

方案1:tidyverse 生态实现(推荐)

借助dplyr的across批量处理目标列,搭配stringr的字符串替换功能:

library(dplyr)
library(stringr)

df_result <- df %>%
  # 匹配所有列名以Grade开头的列,批量做替换
  mutate(across(starts_with("Grade"),
                # 用fixed匹配固定字符串,避免正则转义问题
                ~ str_replace(.x, fixed("0 (0.00%)"), "0")))

如果后续你需要把所有数字 (百分比)格式的内容都统一保留前面的数字,可以用更通用的提取逻辑:

df_result <- df %>%
  mutate(across(starts_with("Grade"),
                ~ str_extract(.x, "^\\d+")))

方案2:Base R 实现(无需加载额外包)

# 定位所有Grade开头的列的索引
grade_col_idx <- grep("^Grade", colnames(df))
# 批量替换
df[grade_col_idx] <- lapply(df[grade_col_idx], function(col) {
  col[col == "0 (0.00%)"] <- "0"
  return(col)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:45:01