【发布时间】:2021-06-12 17:00:45
【问题描述】:
栏目内容显示如下 $1,521+ 2 bds。我想提取 1521 并将其放入新列中。我知道这可以使用正则表达式在 alteryx 中完成,我可以这样做吗?
【问题讨论】:
栏目内容显示如下 $1,521+ 2 bds。我想提取 1521 并将其放入新列中。我知道这可以使用正则表达式在 alteryx 中完成,我可以这样做吗?
【问题讨论】:
下面的呢?
library(tidyverse)
x <- '$1,521+ 2 bds'
parse_number(x)
【讨论】:
例如:
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 日创建
【讨论】:
我们可以从base R使用sub
as.numeric( sub("\\$(\\d+),(\\d+).*", "\\1\\2", x))
#[1] 1521
x <- '$1,521+ 2 bds'
【讨论】: