【问题标题】:Remove everything after any digit in a pattern删除模式中任何数字之后的所有内容
【发布时间】:2020-05-19 15:50:36
【问题描述】:

我正在尝试使用gsub 删除我的数据框列的每个值中的任何数字之后的每个字符:

Tumoral_stage   Methastatic_stage
    T1a                M0
    T1b                M0
    T2c                M0
    T3b                M0
    T1c                M0
    T2                 M0
    T3a                M1

我想得到这个数据框:

Tumoral_stage   Methastatic_stage
    T1                 M0
    T1                 M0
    T2                 M0
    T3                 M0
    T1                 M0
    T2                 M0
    T3                 M1

我想应用 gsub 指令来实现这一点,但我不知道如何指示删除 any 数字字符后的所有内容。

【问题讨论】:

  • T1a2b 呢?

标签: r regex gsub


【解决方案1】:

使用sub()正向观察

x <- c("T1a", "T1b", "T2c", "T3b", "T1c", "T2", "T3a")

sub("(?<=[0-9]).+", "", x, perl = TRUE)

# [1] "T1" "T1" "T2" "T3" "T1" "T2" "T3"

【讨论】:

    【解决方案2】:

    我们也可以使用substr

    substr(x, 1, 2)
    

    str_remove

    library(stringr)
    str_remove(x, "[^0-9]+$")
    

    数据

    x <- c("T1a", "T1b", "T2c", "T3b", "T1c", "T2", "T3a")
    

    【讨论】:

      【解决方案3】:

      考虑捕获您要保留的部分并使用反向引用\\1

      sub("(.*\\d)\\w", "\\1", x)
      [1] "T1" "T1" "T2" "T3" "T1" "T2" "T3"
      

      【讨论】:

        猜你喜欢
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        • 2019-06-28
        • 1970-01-01
        • 1970-01-01
        • 2017-12-31
        • 2018-06-26
        • 1970-01-01
        相关资源
        最近更新 更多