當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。