R: 字符串處理包:stringr

本文摘自:  http://blog.fens.me/r-stringr/    html

1. stringr介紹web

stringr包被定義爲一致的、簡單易用的字符串工具集。全部的函數和參數定義都具備一致性,好比,用相同的方法進行NA處理和0長度的向量處理。正則表達式

字符串處理雖然不是R語言中最主要的功能,卻也是必不可少的,數據清洗、可視化等的操做都會用到。對於R語言自己的base包提供的字符串基礎函數,隨着時間的積累,已經變得不少地方不一致,不規範的命名,不標準的參數定義,很難看一眼就上手使用。字符串處理在其餘語言中都是很是方便的事情,R語言在這方面確實落後了。stringr包就是爲了解決這個問題,讓字符串處理變得簡單易用,提供友好的字符串操做接口。ide

stringr的項目主頁:https://cran.r-project.org/web/packages/stringr/index.html函數

2. stringr安裝工具

本文所使用的系統環境編碼

> install.packages('stringr')spa

> library(stringr)code

3. stringr的API介紹
stringr包1.0.0版本,一共提供了30個函數,方便咱們對字符串處理。經常使用的字符串的處理以str_開頭來命名,方便更直觀理解函數的定義。咱們能夠根據使用習慣對函數進行分類:htm

 

3.1 字符串拼接函數
3.1.1 str_c: 字符串拼接。
    str_join: 字符串拼接,同str_c。
3.1.2 str_trim: 去掉字符串的空格和TAB(\t)
3.1.3 str_pad: 補充字符串的長度
3.1.4 str_dup: 複製字符串
3.1.5 str_wrap: 控制字符串輸出格式
3.1.6 str_sub: 截取字符串
    str_sub<- 截取字符串,並賦值,同str_sub

3.2 字符串計算函數
3.2.1 str_count: 字符串計數
3.2.2 str_length: 字符串長度
3.2.3 str_sort: 字符串值排序
    str_order: 字符串索引排序,規則同str_sort

3.3 字符串匹配函數
3.3.1 str_split: 字符串分割
    str_split_fixed: 字符串分割,同str_split
3.3.2 str_subset: 返回匹配的字符串
3.3.3 word: 從文本中提取單詞
3.3.4 str_detect: 檢查匹配字符串的字符
3.3.6 str_match: 從字符串中提取匹配組。
    str_match_all: 從字符串中提取匹配組,同str_match
3.3.7 str_replace: 字符串替換
    str_replace_all: 字符串替換,同str_replace
3.3.8 str_replace_na:把NA替換爲NA字符串
3.3.9 str_locate: 找到匹配的字符串的位置。
    str_locate_all: 找到匹配的字符串的位置,同str_locate
3.3.10 str_extract: 從字符串中提取匹配字符
      str_extract_all: 從字符串中提取匹配字符,同str_extract

3.4 字符串變換函數
3.4.1 str_conv: 字符編碼轉換
3.4.2 str_to_upper: 字符串轉成大寫
    str_to_lower: 字符串轉成小寫,規則同str_to_upper
    str_to_title: 字符串轉成首字母大寫,規則同str_to_upper

參數控制函數,僅用於構造功能的參數,不能獨立使用。
boundary: 定義使用邊界
coll: 定義字符串標準排序規則。
fixed: 定義用於匹配的字符,包括正則表達式中的轉義符
regex: 定義正則表達式

 


3.1 字符串拼接函數
3.1.1 str_c,字符串拼接操做,與str_join徹底相同,與paste()行爲不徹底一致。

str_c(..., sep = "", collapse = NULL)
str_join(..., sep = "", collapse = NULL)

sep: 把多個字符串拼接爲一個大的字符串,用於字符串的分割符。
collapse: 把多個向量參數拼接爲一個大的字符串,用於字符串的分割符。把多個字符串拼接爲一個大的字符串。

3.1.2 str_trim:去掉字符串的空格和TAB(\t)

str_trim(string, side = c("both", "left", "right"))

string: 字符串,字符串向量。
side: 過濾方式,both兩邊都過濾,left左邊過濾,right右邊過濾
去掉字符串的空格和TAB(\t)

3.1.3 str_pad:補充字符串的長度

str_pad(string, width, side = c("left", "right", "both"), pad = " ")

string: 字符串,字符串向量。
width: 字符串填充後的長度
side: 填充方向,both兩邊都填充,left左邊填充,right右邊填充
pad: 用於填充的字符
補充字符串的長度。

3.1.4 str_dup: 複製字符串

str_dup(string, times)

string: 字符串,字符串向量。
times: 複製數量
複製一個字符串向量。

3.1.5 str_wrap,控制字符串輸出格式

str_wrap(string, width = 80, indent = 0, exdent = 0)

string: 字符串,字符串向量。
width: 設置一行所佔的寬度。
indent: 段落首行的縮進值
exdent: 段落非首行的縮進值

3.1.6 str_sub,截取字符串

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

string: 字符串,字符串向量。
start : 開始位置
end : 結束位置
截取字符串。

3.2 字符串計算函數

3.2.1 str_count, 字符串計數

str_count(string, pattern = "")

string: 字符串,字符串向量。
pattern: 匹配的字符。
對字符串中匹配的字符計數

3.2.2 str_length,字符串長度

str_length(string)

string: 字符串,字符串向量。

3.2.3 str_sort, 字符串值排序,同str_order索引排序

str_sort(x, decreasing = FALSE, na_last = TRUE, locale = "", ...)
str_order(x, decreasing = FALSE, na_last = TRUE, locale = "", ...)

x: 字符串,字符串向量。
decreasing: 排序方向。
na_last:NA值的存放位置,一共3個值,TRUE放到最後,FALSE放到最前,NA過濾處理
locale:按哪一種語言習慣排序
對字符串值進行排序。

# 按ASCII字母排序
> str_sort(c('a',1,2,'11'), locale = "en")
[1] "1" "11" "2" "a"
# 倒序排序
> str_sort(letters,decreasing=TRUE)
[1] "z" "y" "x" "w" "v" "u" "t" "s" "r" "q" "p" "o" "n" "m" "l" "k" "j" "i" "h"
[20] "g" "f" "e" "d" "c" "b" "a"
# 按拼音排序
> str_sort(c('你','好','粉','絲','日','志'),locale = "zh")
[1] "粉" "好" "你" "日" "絲" "志"
對NA值的排序處理
#把NA放最後面
> str_sort(c(NA,'1',NA),na_last=TRUE)
[1] "1" NA NA
#把NA放最前面
> str_sort(c(NA,'1',NA),na_last=FALSE)
[1] NA NA "1"
#去掉NA值
> str_sort(c(NA,'1',NA),na_last=NA)
[1] "1"

3.3 字符串匹配函數

3.3.1 str_split,字符串分割,同str_split_fixed

str_split(string, pattern, n = Inf)
str_split_fixed(string, pattern, n)

string: 字符串,字符串向量。
pattern: 匹配的字符。
n: 分割個數
對字符串進行分割。

3.3.2 str_subset:返回的匹配字符串

str_subset(string, pattern)

string: 字符串,字符串向量。
pattern: 匹配的字符。

3.3.3 word, 從文本中提取單詞

word(string, start = 1L, end = start, sep = fixed(" "))

string: 字符串,字符串向量。
start: 開始位置。
end: 結束位置。
sep: 匹配字符。

3.3.4 str_detect匹配字符串的字符

str_detect(string, pattern)

string: 字符串,字符串向量。
pattern: 匹配字符。

3.3.6 str_match,從字符串中提取匹配組

str_match(string, pattern)
str_match_all(string, pattern)

string: 字符串,字符串向量。
pattern: 匹配字符。

#從字符串中提取匹配組
> val <- c("abc", 123, "cba")
# 匹配字符a,並返回對應的字符
> str_match(val, "a")
[,1]
[1,] "a"
[2,] NA
[3,] "a"
# 匹配字符0-9,限1個,並返回對應的字符
> str_match(val, "[0-9]")
[,1]
[1,] NA
[2,] "1"
[3,] NA
# 匹配字符0-9,不限數量,並返回對應的字符
> str_match(val, "[0-9]*")
[,1]
[1,] ""
[2,] "123"
[3,] ""
#從字符串中提取匹配組,以字符串matrix格式返回
> str_match_all(val, "a")
[[1]]
[,1]
[1,] "a"

[[2]]
[,1]

[[3]]
[,1]
[1,] "a"

> str_match_all(val, "[0-9]")
[[1]]
[,1]

[[2]]
[,1]
[1,] "1"
[2,] "2"
[3,] "3"

[[3]]
[,1]

3.3.7 str_replace,字符串替換

str_replace(string, pattern, replacement)

string: 字符串,字符串向量。
pattern: 匹配字符。
replacement: 用於替換的字符。

3.3.8 str_replace_na把NA替換爲NA字符串

str_replace_na(string, replacement = "NA")

string: 字符串,字符串向量。
replacement : 用於替換的字符。
把NA替換爲字符串

3.3.9 str_locate,找到的模式在字符串中的位置。

str_locate(string, pattern)
str_locate_all(string, pattern)

string: 字符串,字符串向量。
pattern: 匹配字符。

3.3.10 str_extract從字符串中提取匹配模式

str_extract(string, pattern)
str_extract_all(string, pattern, simplify = FALSE)

string: 字符串,字符串向量。
pattern: 匹配字符。
simplify: 返回值,TRUE返回matrix,FALSE返回字符串向量

3.4 字符串變換函數

3.4.1 str_conv:字符編碼轉換

str_conv(string, encoding)

string: 字符串,字符串向量。
encoding: 編碼名。

#對中文進行轉碼處理。
# 把中文字符字節化
> x <- charToRaw('你好');x
[1] c4 e3 ba c3
# 默認win系統字符集爲GBK,GB2312爲GBK字集,轉碼正常
> str_conv(x, "GBK")
[1] "你好"
> str_conv(x, "GB2312")
[1] "你好"

# 轉UTF-8失敗
> str_conv(x, "UTF-8")
[1] "���"
Warning messages:
1: In stri_conv(string, encoding, "UTF-8") :
input data \xffffffc4 in current source encoding could not be converted to Unicode
2: In stri_conv(string, encoding, "UTF-8") :
input data \xffffffe3\xffffffba in current source encoding could not be converted to Unicode
3: In stri_conv(string, encoding, "UTF-8") :
input data \xffffffc3 in current source encoding could not be converted to Unicode
#把unicode轉UTF-8
> x1 <- "\u5317\u4eac"
> str_conv(x1, "UTF-8")
[1] "北京"

3.4.2 str_to_upper,字符串大寫轉換。

str_to_upper(string, locale = "")str_to_lower(string, locale = "")str_to_title(string, locale = "") string: 字符串。 locale:按哪一種語言習慣排序

相關文章
相關標籤/搜索