【问题标题】:Extract number after specific character in dataframe在数据框中特定字符后提取数字
【发布时间】:2021-03-24 17:35:56
【问题描述】:

我有一个具有这种结构的数据框:

var            
A1sometext_r2
BXother_r11
A1sometext_r4
C7sometext_r8

并且想要一个新列来存储“r”后面的数字

var             new  
A1some9text_r2   2
BXother_r11      11
A1sometext_r4    4
C7sometext_r8    8

我正在尝试合并到管道中,这样 Tidyverse 会更好

谢谢!

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    你可以这样做:

    tibble(var = paste0('lala_r', sample(1:20, 15))) %>% 
      dplyr::mutate(
        new = stringr::str_replace_all(var, '.*_r([0-9]*)$', '\\1'),
        new = as.integer(new)
      )
    

    输出:

    # A tibble: 15 x 2
       var        new
       <chr>    <int>
     1 lala_r8      8
     2 lala_r11    11
     3 lala_r16    16
     4 lala_r7      7
     5 lala_r1      1
     6 lala_r10    10
     7 lala_r12    12
     8 lala_r9      9
     9 lala_r18    18
    10 lala_r6      6
    11 lala_r3      3
    12 lala_r20    20
    13 lala_r4      4
    14 lala_r14    14
    15 lala_r15    15
    

    【讨论】:

    • 正则表达式,没想到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    • 2020-07-24
    • 2018-07-25
    • 1970-01-01
    • 2020-02-08
    相关资源
    最近更新 更多