R語言使用Stringr與正則表達式進行字符串處理代碼示例
前言
字符串處理是數(shù)據(jù)清洗與分析中必不可少的一環(huán)。R語言中的stringr包提供了強大且易用的字符串處理函數(shù),而正則表達式則使得字符串的匹配與替換更為靈活和高效。本文將詳細(xì)介紹如何使用stringr和正則表達式來處理字符串,并提供相應(yīng)的示例代碼。
一、Stringr 包
1. 創(chuàng)建與查看
查看:
library(stringr) str_view("Hello World", "World")
使用
str_view可以直觀地查看匹配結(jié)果,base::writeLines可以顯示字符串內(nèi)容。轉(zhuǎn)義符:使用
\\進行轉(zhuǎn)義,例如:# cat()函數(shù):Concatenate and Print(連接和打?。? cat("This is a backslash: \\")This is a backslash: \
原始字符串:可以避免頻繁的轉(zhuǎn)義,例如:
raw_string <- r"(\d{3}-\d{2}-\d{4})"
2. 長度與子集
字符串長度:
str_length("Hello")[1] 5
按位置提取子集:
str_sub("Hello World", 1, 5)[1] "Hello"
填充字符串:
str_pad("Hello", width = 10, side = "both", pad = "-")[1] "--Hello---"
3. 檢測匹配
檢測匹配:返回邏輯值,注意是向量運算;可以與sum()等統(tǒng)計函數(shù)合用。
str_detect(c("apple", "banana", "pear"), "a")[1] TRUE TRUE TRUE
選擇匹配的子集:對于字符串向量,選出符合匹配的子集,注意與
str_sub區(qū)分開。str_subset(c("apple", "banana", "pear"), "a")[1] "apple" "banana" "pear"
統(tǒng)計匹配次數(shù):
str_count(c("apple", "banana", "pear"), "a")[1] 1 3 1
查看匹配:
str_view(c("apple", "banana", "pear"), "a")
4. 提取匹配
提取第一個匹配項:如果沒有匹配則返回NA
str_extract("The price is $123", "\\$\\d+")[1] "$123"
提取所有匹配項:
str_extract_all("The price is $123 or $456", "\\$\\d+")[1] "$123" "$456"
分組匹配:
str_match("The price is $123", "(\\$\\d+)")
5. 修改字符串
按位置替換子集:
text <- "Hello, world!" str_sub(text, 1, 5) <- "Hi"
轉(zhuǎn)換為小寫:
str_to_lower("Hello")替換匹配項:
str_replace("The price is $123", "\\$\\d+", "$456")
6. 連接和分割
合并字符串:
str_c("Hello", "World", sep = " ")分割字符串:
str_split("apples,oranges,pears", ",")
7. 排序與定位字符串
排序字符向量:
str_sort(c("banana", "apple", "pear"))返回排序序號:
str_order(c("banana", "apple", "pear"))定位匹配項:
str_locate("The price is $123", "\\$\\d+")
二、正則表達式
1. 基礎(chǔ)/精確匹配
最簡單的正則表達式是匹配一個精確的字符串,如apple。
2. 條件
“或”匹配:
str_detect(c("apple", "banana", "pear"), "apple|banana")“之一”匹配:
str_detect(c("apple", "banana", "pear"), "[aeiou]")
3. 錨點 (始于權(quán)力^(power),終于金錢$)
開始匹配:
str_detect("apple", "^a")結(jié)尾匹配:
str_detect("apple", "e$")
4. 量詞
出現(xiàn)0次或1次:
str_detect(c("color", "colour"), "colou?r")出現(xiàn)1次或更多:
str_detect(c("apple", "aple"), "ap+le")
5. 特殊字符集合
匹配任何數(shù)字(digit):
str_detect("123abc", "\\d")匹配空白字符(space):
str_detect("a b", "\\s")
6. 分組與回溯引用
分組匹配:
str_match("The price is $123", "(\\$\\d+)")回溯引用:
str_replace("abab", "(ab)\\1", "cd")
總結(jié)
到此這篇關(guān)于R語言使用Stringr與正則表達式進行字符串處理的文章就介紹到這了,更多相關(guān)R語言Stringr與正則表達式字符串處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語言數(shù)值取消科學(xué)計數(shù)法表示的操作
這篇文章主要介紹了R語言數(shù)值取消科學(xué)計數(shù)法表示的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
R語言中的fivenum與quantile()函數(shù)算法詳解
這篇文章主要介紹了R語言中的fivenum與quantile()函數(shù)算法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
R語言編程學(xué)習(xí)繪制動態(tài)圖實現(xiàn)示例
這篇文章主要介紹了R語言編程學(xué)習(xí)繪制動態(tài)圖實現(xiàn)示例,有需要的的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2021-10-10
R語言實現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程
Python語言越來越流行,尤其是在機器學(xué)習(xí)與深度學(xué)習(xí)等領(lǐng)域,但是R語言在數(shù)據(jù)分析與可視化方面仍然具有絕對的優(yōu)勢,下面這篇文章主要給大家介紹了關(guān)于R語言實現(xiàn)各種數(shù)據(jù)可視化的超詳細(xì)教程,需要的朋友可以參考下2022-11-11
關(guān)于R語言lubridate包處理時間數(shù)據(jù)的問題
這篇文章主要介紹了關(guān)于R語言lubridate包處理時間數(shù)據(jù)的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05
解決R語言中install_github中無法安裝遇到的問題
這篇文章主要介紹了解決R語言中install_github中無法安裝遇到的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04

