搜尋感興趣的網誌

所有文章連結

2022年3月29日 星期二

R Packages stringr - str_extract | R包stringr - str_extract

 


str_extrac用法上較為困難,提取的部分使用比較複雜的正則表達式去做搜尋與提取,應用在長字串或是不確定字串上較有幫助


基本語法

str_extract(dataset$string, 查找的字元或字串模式)


一些正則表達式,其他的再慢慢補充,R與Python使用" \ "規則是一樣的,需要多加一個" \ "進行定位

  • `//d`    >> 匹配十進制數字
  • `^`      >> 匹配字首
  • `$`      >> 匹配字尾
  • `\\n`    >> 匹配換行符號
  • `[a-z]` >> 匹配a~z(單個)
  • `+`      >> 匹配不只一個


有一點要注意一下

  • 小寫與大寫判斷為不同字元,需要完全確定大小寫


建立個數據框進行查找

stringr_df <- tibble(
    weekday = c("Sunday 4", "Monday", "Tuesday", "Wednesday",
    "Thursday 77", "Friday", "Saturday 335")
    )

# 輸出結果
r$> stringr_df # A tibble: 7 x 1 weekday <chr> 1 Sunday 4 2 Monday 3 Tuesday 4 Wednesday 5 Thursday 77 6 Friday 7 Saturday 335


使用\\d查找數字,查找結果僅以第一個結果位置作為返回條件,若要返回全部數字,需尾端加上" + "

# 查找數字
str_extract(stringr_df$weekday, "\\d")

# 輸出結果
r$> str_extract(stringr_df$weekday, "\\d") [1] "4" NA NA NA "7" NA "3"

# 查找全部數字
str_extract(stringr_df$weekday, "\\d+")

# 輸出結果
r$> str_extract(stringr_df$weekday, "\\d+") [1] "4" NA NA NA "77" NA "335"


以a - z作為查找範圍(不加" + "),僅返回第一個結果

# 查找a-z
str_extract(stringr_df$weekday, "[a-z]")

# 輸出結果
r$> str_extract(stringr_df$weekday, "[a-z]") [1] "u" "o" "u" "e" "h" "r" "a"


以a - z、A - Z作為查找範圍(加" + "),返回全部結果,但不包含數字

# 查找a-z、A-Z
str_extract(stringr_df$weekday, "[A-Z][a-z]+")

# 輸出結果
r$> str_extract(stringr_df$weekday, "[A-Z][a-z]+") [1] "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" [7] "Saturday"

沒有留言:

張貼留言

其他文章

看看精選文章

納希克房價分析 | Nashik Apartment Price Analyze – 語法解析(上)

  這次 Nashik 的房價分析有上傳至 Kaggle ,有興趣的朋友可以前往閱覽, RMarkdown PDF 報告存放在 Google 雲端,程式碼則是存放於 Github ,照慣例會分享好用的函式語法,雖說基本的 Packages 與語法可能很多人都會完整的閱覽,但是實際...