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

R语言如何判断字符串含括号且括号内数值大于0

实现代码

你可以借助stringr做正则匹配提取数值,结合dplyr做列处理,代码可直接复现你的需求:

1. 加载依赖包

library(dplyr)
library(stringr)

2. 构造示例数据(你自己用的时候替换成你的数据集即可)

df <- data.frame(
  `Column 1` = c(
    "Q9H7C4 1xPhospho [S325(100)]",
    "P11169 1xPhospho [S485(88.2)]",
    "Q9UK59 1xPhospho [S/T]",
    "Q8WW12 1xPhospho [S119(100)]"
  ), check.names = FALSE
)

3. 按条件生成新列

df <- df %>%
  mutate(
    # 提取小括号内的数值(支持整数、小数格式)
    bracket_val = as.numeric(str_extract(`Column 1`, "\\((\\d+\\.?\\d*)\\)", group = 1)),
    # 满足「存在括号内数值且数值>0」则保留原内容,否则填充NA
    `New Column` = ifelse(!is.na(bracket_val) & bracket_val > 0, `Column 1`, NA_character_)
  ) %>%
  # 移除中间辅助列,不需要可注释掉
  select(-bracket_val)

基础R版本(无需安装额外包)

df$`New Column` <- ifelse(
  grepl("\\(\\d+\\.?\\d*\\)", df$`Column 1`),
  {
    num <- as.numeric(sub(".*\\((\\d+\\.?\\d*)\\).*", "\\1", df$`Column 1`))
    ifelse(num > 0, df$`Column 1`, NA_character_)
  },
  NA_character_
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:36:04