搜尋感興趣的網誌

所有文章連結

2022年3月28日 星期一

R Packages stringr - str_detect | R包stringr - str_detect

 


str_detect用來檢測字串中是否存在要檢查的項目,可以檢查單一字元、字串,也支援正則表達式,需要注意的是檢查的項目有存在大小寫之分,檢查的結果只以TRUE、FALSE,所以實用性上來說並不是太大。


基本語法

str_detect(dataset$string, 檢查的字元或字串)


可用參數

negate = FALSE,預設FALSE,若為TRUE,則返回相反的檢查結果


有幾點要注意一下

  • " "    >> 準確查找,也就是AND,完全符合才行
  • "[ ]" >> 模糊查找,也就是OR,部分符合即可
  • 小寫與大寫判斷為不同字元,需要完全確定大小寫


建立一個字串的數據框

# 建立數據框
stringr_df <- tibble(
    weekday = c("Sunday", "Monday", "Tuesday", "Wednesday",
    "Thursday", "Friday", "Saturday")
    )

# 看一下數據框的內容
r$> stringr_df # A tibble: 7 x 1 weekday <chr> 1 Sunday 2 Monday 3 Tuesday 4 Wednesday 5 Thursday 6 Friday 7 Saturday


檢查是否存在"t" >> 只有周六有小寫的t,大寫的無法檢測,加入參數設定TRUE檢查除了t以外的字元

# 檢查各自串是否存在"t"
str_detect(stringr_df$weekday, "t")

# 輸出結果
r$> str_detect(stringr_df$weekday, "t") [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE

# 檢查各自串是否存在"t"以外的字元
str_detect(stringr_df$weekday, "t", negate = TRUE)

# 輸出結果
r$> str_detect(stringr_df$weekday, "t", negate = TRUE) [1] TRUE TRUE TRUE TRUE TRUE TRUE FALSE

接下來就需要比較注意,檢測是有區分範圍的,只以" "包圍的字串,檢測的條件為AND,若是以[ ]檢測,檢測的方式則為OR

# 檢查是否存在這三個字元
str_detect(stringr_df$weekday, "riy")

# 輸出結果 >> 全部都為FALSE
r$> str_detect(stringr_df$weekday, "riy") [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE


若是以OR的方式

# 檢查是否存在這三個字元
str_detect(stringr_df$weekday, "[riy]")

# 輸出結果 >> 只要任一個有符合即為TRUE
r$> str_detect(stringr_df$weekday, "[riy]") [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE

沒有留言:

張貼留言

其他文章

看看精選文章

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

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