搜尋感興趣的網誌

所有文章連結

2022年3月28日 星期一

R Packages stringr - str_locate | R包stringr - str_locate

 


str_locate用處與str_subset、str_which很像,都是查找位置,有趣的是這幾個函數查找的結果與方式都不相同,str_subset取出符合的字串,str_which輸出符合的字串位置,str_locate則是輸出準確位置


基本語法

str_locate(dataset$string, 查找的字元或字串)

str_locate_all(dataset$string, 查找的字元或字串)


有幾點要注意一下

  • 小寫與大寫判斷為不同字元,需要完全確定大小寫
  • 進行搜尋時" "與"[ ]"定義上與其他函數不同
  • 重複的結果並不會全部返回,除非使用str_locate_all函數


創個數據集先

# 建立數據集
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


查找"day",可以看到day在第一個字符串中從4開始6結束

# 查找day
str_locate(stringr_df$weekday, "day")

# 輸出結果
r$> str_locate(str
ingr_df$weekday, "day") start end [1,] 4 6 [2,] 4 6 [3,] 5 7 [4,] 7 9 [5,] 6 8 [6,] 4 6 [7,] 6 8


如果使用模糊查找或是字元的方式呢?結果與其他函數不同,使用[]查找的結果只有進行"d"的搜尋就返回了,字元查找以"e"去搜尋,Wednesday應該是2, 5,但返回的是2, 2,表示搜尋返回的部分若重複的話只有返回第一個搜尋結果

# 用[ ]查找day
str_locate(stringr_df$weekday, "[day]")

# 輸出結果
r$> str_locate(stringr_df$weekday, "[day]") start end [1,] 4 4 [2,] 4 4 [3,] 5 5 [4,] 3 3 [5,] 6 6 [6,] 4 4 [7,] 2 2

# 查找"e"
str_locate(stringr_df$weekday, "e")

# 輸出結果
r$> str_locate(stringr_df$weekday, "e") start end [1,] NA NA [2,] NA NA [3,] 3 3 [4,] 2 2 [5,] NA NA [6,] NA NA [7,] NA NA


使用str_locate_all進行查找,會將重複的進行位置查找後輸出

# 查找"e"
str_locate_all(stringr_df$weekday, "e")

# 輸出結果
r$> str_locate_all(stringr_df$weekday, "e") [[1]] start end [[2]] start end [[3]] start end [1,] 3 3 [[4]] start end [1,] 2 2 [2,] 5 5 [[5]] start end [[6]] start end [[7]] start end

沒有留言:

張貼留言

其他文章

看看精選文章

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

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