R語言 字串處理 stringr 包的強大之處

2021-08-20 13:58:11 字數 2761 閱讀 4503

2、字串替換利器–str_replace_all

3、字串抽取利器–str_match_all

4、字串擷取利器–str_sub

str_split(string, pattern, n = inf, simplify = false)

string:指定需要處理的字串向量

pattern:分隔符,可以是複雜的正規表示式

n:指定切割的份數,預設所有符合條件的字串都會被拆分開來

simplify:是否返回字串矩陣,預設以列表的形式返回

> str_split(c('ls***[email protected]','0511-87208801'), '[@-]')

[[1]]

[1] "ls***2011"

"163.com"

[[2]]

[1] "0511"

"87208801"

>

#例如資料表中有一列郵箱字段,如何把位址和網域名稱兩部分拆分開來儲存到新的兩列中?

email <- c('ls***[email protected]','[email protected]','[email protected]','[email protected]')

df <- data.frame(email, add, doman)

df

> df

email add doman

1 ls***2011@163

.com ls***2011 163.

com2

[email protected]

1029776077 qq.com

3 [email protected] qazwsx gmail.com

4 abc123edc@126

.com abc123edc 126.

com>

str_replace(string, pattern, replacement)

str_replace_all(string, pattern, replacement)

string:字串向量

pattern:被替換的子字串,可以是複雜的正規表示式

replacement:用來替換的字串

#例子

#將含有千分位符或百分位符的資料轉換為數值型資料

commadata <- c('123,456','780,123,433','45,234')

percentdata <- c('23.4%','34.56','44.12%')

commadatanew <- as.numeric(str_replace_all(commadata, ',', ''))

percentdatanew <- as.numeric(str_replace_all(percentdata, '%', ''))/100

commadatanew

percentdatanew

str_extract(string, pattern)

str_extract_all(string, pattern, simplify = false)

string:字串向量

pattern:抽取出滿足條件的子字串,往往使用正規表示式

simplify:是否返回字串矩陣,預設以列表的形式返回

兩個函式的區別在於,前面函式只抽取出首次滿足條件的子字串,後面的函式可以抽取出所有滿足條件的子字串。當前面的函式沒有匹配到抽取的結果,則返回na,而後面的函式在沒有匹配到抽取的結果時返回character(0)。

str_match(string, pattern)

str_match_all(string, pattern)

函式引數的含義同str_extract。

例子:

# 抽取出字串中的日期和流量值

s <- c('date:2017-04-14,pv:223453','date:2017-04-15,pv:228115','date:2017-04-16,pv:201233','date:2017-04-17,pv:324123')

date <- str_extract_all(s, '[0-9]-[0-9]-[0-9]')

pv <- str_extract_all(s, 'pv:([0-9]*)')

unlist(date)

unlist(pv)

#結果中的pv兩竟然還是包含'pv:'字串,下面我們用另乙個抽函式str_match_all。

pv <- str_match_all(s, 'pv:([0-9]*)')

pv

str_sub(string, start = 1l, end = -1l)

string:字串向量

start:指定獲取子字串的起始位置

end:指定獲取子字串的終止位置

注意:如果start或end為負整數時,則從字串的最後乙個字元向前查詢

#例子

# 獲取手機號的末尾4位(負整數引數)

s <- c('13611235678','13912343344','17888886666')

(tail4 <- str_sub(s, -4))

R語言處理字串

用於字串分割的函式 如strsplit 123abcdefgabcdef ab 1 1 123 cdefg cdef 字串連線 paste paste sep collapse null 字串分割 strsplit strsplit x,split,extended true,fixed false...

字串處理函式 R語言

用於字串分割的函式 如strsplit 123abcdefgabcdef ab 1 1 123 cdefg cdef 字串連線 paste paste sep collapse null 字串分割 strsplit strsplit x,split,extended true,fixed false...

R語言 字串處理函式

r語言中字串處理函式 來自base包 函式說 明 nchar x 計算x中的字元數量 substr 提取或替換乙個字元向量中的子串 grep 在字串中匹配某種模式 sub 在字串中搜尋模式,並以另乙個文字替換 strsplit 分割字串 toupper 大寫轉換 tolower 小寫轉換 1 nch...