【问题标题】:How to copy string from a column by a condition如何按条件从列中复制字符串
【发布时间】:2019-09-16 17:31:22
【问题描述】:

我有这种情况:

Column
00000000 H0200 5555
H2000 OOOOO4344p H2300
B1500 00000 R2222
B1000

这只是一列,我需要为每一行获取以 H 或 B 开头的第一个值,这样:

Column
H0200
H2000
B1500
B1000

我尝试了几个命令 gsub、strsplit、substr 等。但我无法为此做条件。

【问题讨论】:

    标签: r regex string replace


    【解决方案1】:

    一个选项是str_extract from stringr,通过匹配单词边界 (\\b) 中的 'H' 或 (|) 'B' 字符后跟多一个数字 (\\d+) 和单词边界 (\\b)

    library(stringr)
    df1$Column <- str_extract(df1$Column, "\\b(H|B)\\d+\\b")
    

    【讨论】:

      【解决方案2】:
      sapply(strsplit(d$Column, " "), function(s)
          s[substring(s, 1, 1) %in% c("H", "B")][1])
      #[1] "H0200" "H2000" "B1500" "B1000"
      

      sub(".*?([H|B]\\w+).*", "\\1", d$Column)
      #[1] "H0200" "H2000" "B1500" "B1000"
      

      数据

      d = structure(list(Column = c("00000000 H0200 5555",
                                    "H2000 OOOOO4344p H2300", 
                                    "B1500 00000 R2222",
                                    "B1000")),
                    class = "data.frame",
                    row.names = c(NA, -4L))
      

      【讨论】:

        猜你喜欢
        • 2017-11-26
        • 2012-01-11
        • 2016-06-02
        • 2015-09-06
        • 2016-07-10
        • 2011-12-28
        • 2020-08-13
        • 1970-01-01
        • 2014-01-26
        相关资源
        最近更新 更多