【问题标题】:Removing suffixes with patterns in an R dataframe string variable删除 R 数据帧字符串变量中带有模式的后缀
【发布时间】:2019-10-21 16:19:11
【问题描述】:

在下面的 data.frame d 中,我想知道如何删除包含以下任何内容的后缀:

(1) ".SHORT" 单独或后跟一个点和任意数字(例如:".SHORT.1"

(2) ".SHORT.." 后跟一个单独的数字或后跟一个点和任何数字(例如:".SHORT..2.1"

(3) ".DEL1" 单独或后跟一个点和任意数字(例如:".DEL1.1"

(4) ".DEL1.." 后跟一个单独的数字或后跟一个点和任何数字(例如:“.DEL1..2.1”)

(5) ".DEL2" 单独或后跟一个点和任意数字(例如:".DEL2.1"

(6) ".DEL2.." 后跟一个单独的数字或后跟一个点和任何数字(例如:“.DEL2..2.1”)

d <- data.frame(NAMES = c("A.SHORT", "A.SHORT.2", "A.DEL1", "A.DEL1.4", "B.DEL2.4", 
"B.DEL1..2.1", "C.DEL1..2"))

【问题讨论】:

标签: r regex function dataframe


【解决方案1】:
d <- data.frame(NAMES = c("A.SHORT", "A.SHORT.2", "A.DEL1",
                          "A.DEL1.4", "B.DEL2.4","B.DEL1..2.1",
                          "C.DEL1..2"))
sub("(.*)\\.(SHORT|DEL(1|2))(\\.+\\d.*)?", "\\1", d$NAMES)
#[1] "A" "A" "A" "A" "B" "B" "C"

【讨论】:

    【解决方案2】:

    (?:\.SHORT|\.DEL1|\.DEL2)(?:\.\d+|\.\.\d+(?:\.\d+)?)?

    此正则表达式将匹配.SHORT.DEL1.DEL2,后跟可选的. 和一个或多个数字,或..,一个数字,以及可选的. 和另一个数字。

    Demo

    【讨论】:

      【解决方案3】:

      根据数据,我们可以使用substr

      substr(d$NAMES, 1, 1)
      #[1] "A" "A" "A" "A" "B" "B" "C"
      

      【讨论】:

        猜你喜欢
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 2021-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-26
        • 2012-01-10
        相关资源
        最近更新 更多