【问题标题】:Trying to extract specific characters in a column in R?试图在 R 的列中提取特定字符?
【发布时间】:2021-06-12 17:00:45
【问题描述】:

栏目内容显示如下 $1,521+ 2 bds。我想提取 1521 并将其放入新列中。我知道这可以使用正则表达式在 alteryx 中完成,我可以这样做吗?

【问题讨论】:

    标签: r extract


    【解决方案1】:

    下面的呢?

    library(tidyverse)
    
    x <- '$1,521+ 2 bds'
    
    parse_number(x)
    

    【讨论】:

    • 谢谢,非常感谢! data$new_col
    【解决方案2】:

    例如:

    library(tidyverse)    
    
    #generate some data
    tbl <- tibble(string = str_c('$', as.character(seq(1521, 1541, 1)), '+', ' 2bds'))
    
    new_col <- 
        tbl$string %>%
        str_split('\\+',simplify = TRUE) %>% 
        `[`(, 1) %>% 
        str_sub(2, -1) #get rid of '$' at the start
    
    mutate(tbl, number = new_col)
    #> # A tibble: 21 x 2
    #>    string      number
    #>    <chr>       <chr> 
    #>  1 $1521+ 2bds 1521  
    #>  2 $1522+ 2bds 1522  
    #>  3 $1523+ 2bds 1523  
    #>  4 $1524+ 2bds 1524  
    #>  5 $1525+ 2bds 1525  
    #>  6 $1526+ 2bds 1526  
    #>  7 $1527+ 2bds 1527  
    #>  8 $1528+ 2bds 1528  
    #>  9 $1529+ 2bds 1529  
    #> 10 $1530+ 2bds 1530  
    #> # … with 11 more rows
    

    由reprex package (v2.0.0) 于 2021 年 6 月 12 日创建

    【讨论】:

    • 感谢这个解决方案也有效!感谢您的帮助。
    【解决方案3】:

    我们可以从base R使用sub

    as.numeric( sub("\\$(\\d+),(\\d+).*", "\\1\\2", x))
    #[1] 1521
    

    数据

    x <- '$1,521+ 2 bds' 
    

    【讨论】:

      猜你喜欢
      • 2021-04-16
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 2022-11-18
      • 1970-01-01
      相关资源
      最近更新 更多