当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R tidyr extract 使用正则表达式组将字符列提取为多列


[Superseded]

extract() 已被 separate_wider_regex() 取代,因为它具有更完善的 API 和更好的问题处理能力。被取代的函数不会消失,但只会收到关键的错误修复。

给定带有捕获组的正则表达式,extract() 将每个组转换为一个新列。如果组不匹配,或者输入为 NA,则输出将为 NA。

用法

extract(
  data,
  col,
  into,
  regex = "([[:alnum:]]+)",
  remove = TRUE,
  convert = FALSE,
  ...
)

参数

data

一个 DataFrame 。

col

< tidy-select > 要展开的列。

into

要创建为字符向量的新变量的名称。使用 NA 省略输出中的变量。

regex

表示用于提取所需值的正则表达式的字符串。 into 的每个元素都应该有一个组(由 () 定义)。

remove

如果 TRUE ,从输出数据帧中删除输入列。

convert

如果 TRUE ,将在新列上运行 type.convert()as.is = TRUE。如果组件列是整数、数字或逻辑,这非常有用。

注意:这将导致字符串 "NA" 转换为 NA

...

传递给方法的附加参数。

也可以看看

separate() 由分隔符分隔。

例子

df <- tibble(x = c(NA, "a-b", "a-d", "b-c", "d-e"))
df %>% extract(x, "A")
#> # A tibble: 5 × 1
#>   A    
#>   <chr>
#> 1 NA   
#> 2 a    
#> 3 a    
#> 4 b    
#> 5 d    
df %>% extract(x, c("A", "B"), "([[:alnum:]]+)-([[:alnum:]]+)")
#> # A tibble: 5 × 2
#>   A     B    
#>   <chr> <chr>
#> 1 NA    NA   
#> 2 a     b    
#> 3 a     d    
#> 4 b     c    
#> 5 d     e    

# Now recommended
df %>%
  separate_wider_regex(
    x,
    patterns = c(A = "[[:alnum:]]+", "-", B = "[[:alnum:]]+")
  )
#> # A tibble: 5 × 2
#>   A     B    
#>   <chr> <chr>
#> 1 NA    NA   
#> 2 a     b    
#> 3 a     d    
#> 4 b     c    
#> 5 d     e    

# If no match, NA:
df %>% extract(x, c("A", "B"), "([a-d]+)-([a-d]+)")
#> # A tibble: 5 × 2
#>   A     B    
#>   <chr> <chr>
#> 1 NA    NA   
#> 2 a     b    
#> 3 a     d    
#> 4 b     c    
#> 5 NA    NA   
源代码:R/extract.R

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Extract a character column into multiple columns using regular expression groups。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。