加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

数据分析学习之R-stringr(字符串处理)

发布时间:2022-10-15 23:30:57 所属栏目:MsSql教程 来源:网络
导读: 此文章是Hadley Wickham个人主页中关于stringr包的使用翻译。
概述:
在R中,字符串并不是很受重视的部分,但是它在数据清洗和数据准备中确实起着重要的作用。stringr包中提供了一系列字符

此文章是Hadley Wickham个人主页中关于stringr包的使用翻译。

概述:

在R中,字符串并不是很受重视的部分,但是它在数据清洗和数据准备中确实起着重要的作用。stringr包中提供了一系列字符串处理函数,这些函数的设计使得字符串的处理尽可能的简单。如果你对字符串不是很熟悉,最好从R for Data Science的字符串部分开始学起。

stringr包是建立在stringi上的,stringi包使用ICU C库提供快速、准确的常见字符串操作。stringr主要提供了最重要和最常用的字符串处理函数,而stringi涵盖了几乎所有你能想象到的字符串内容的综合集。如果你在使用stringr包时发现没有你想用的函数,试试在stringi包中寻找。这两个包很类似,有几乎相同的规则,所以你一旦掌握了stringr包的使用,stringi包也会快速上手。

#Install the released version from CRAN:
install.packages("stringr")
#Install the cutting edge development version from GitHub:
install.packages("devtools")
devtools::install_github("tidyverse/stringr")

stringr包中函数的用法:

stringr包中所有的函数均以str_开头,第一个参数为字符串向量。

(1)str_length(string)函数:计算字符串的长度

实例不一一列举,祥看stringr.tidyverse.org/reference/str_length.html

> x <- c("why", "video", "cross", "extra", "deal", "authority")
> str_length(x)#计算向量长度
[1] 3 5 5 5 4 9
str_length(letters)#letters是26个英文字母的集合
>  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
str_length(NA)
> [1] NA
str_length(factor("abc"))
> [1] 3

(2)str_c()函数:字符串拼接函数,将多个字符串合并成一个字符串。

str_c(..., sep = "", collapse = NULL)#默认参数。sep的作用为多个字符串连接成一个字符串时的分隔符,相当于这个新字符串的一部分,最终输出的是字符串向量。collapse的作用是字符串连接后的分隔符Mssq字符串函数,最终输出单个字符串。如果collapse为NULL,输出字符串向量的元素个数为输入元素最大的字符串向量个数,如果collapse不为NULL,输出字符串长度为1。以下结果可以看出两者的区别。

> x <- c("why", "video", "cross", "extra")
> str_c(x,x,collapse = ", ")
[1] "whywhy, videovideo, crosscross, extraextra"
> str_c(x,x,sep = ",")
[1] "why,why"     "video,video" "cross,cross" "extra,extra"
str_c(letters, " is for", "...")
>  [1] "a is for..." "b is for..." "c is for..." "d is for..." "e is for..."
...#输出结果未列完整。
str_c(letters, collapse = ", ")
#> [1] "a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z"
# Missing inputs give missing outputs
str_c(c("a", NA, "b"), "-d")
> [1] "a-d" NA    "b-d"
# Use str_replace_NA to display literal NAs:
str_c(str_replace_na(c("a", NA, "b")), "-d")
> [1] "a-d"  "NA-d" "b-d" 

(3)str_sub()函数:从字符串向量中截取、替换子字符串。

str_sub(string, start = 1L, end = -1L)#提取字符串
str_sub(string, start = 1L, end = -1L) <- value #替换子字符串

start表示从哪个字符开始,默认是第一个。end表示到哪个字符结束,默认最后一个。

注:如果是负数,要倒着数;要注意字符串中的特殊字符也是字符串的一部分,切勿遗漏;参数可以是数值型向量,但维度需相等。

hw <- "Hadley Wickham"
str_sub(hw,1,-2)
[1] "Hadley Wickha"
str_sub(hw,8)
[1] "Wickham"
str_sub(hw,end=6)
[1] "Hadley"
> str_sub(hw, c(1, 8), c(6, 14))
[1] "Hadley"  "Wickham"
# Replacement form
x <- "BBCDEF"
#字符替换,并将结果赋给x
str_sub(x, -1, -1) <- "K"; x
> [1] "BBCDEK"
str_sub(x, -2, -2) <- "GHIJ"; x
[1] "BBCDGHIJK"

(4)str_subset(string,pattern)函数:返回匹配的字符串。

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

> fruit <- c("apple", "banana", "pear", "pinapple")
> str_subset(fruit, "a") #返回含字符a的单词
[1] "apple"    "banana"   "pear"     "pinapple"
> str_subset(fruit, "ap") ##返回含字符'ap'的单词
[1] "apple"    "pinapple"
> str_subset(fruit, "^a") ## 开头匹配
[1] "apple"
> str_subset(fruit, "a$") ## 结尾匹配
[1] "banana"
> str_subset(fruit, "[aeiou]") ##返回含'aeiou'任一个字符的单词
[1] "apple"    "banana"   "pear"     "pinapple"
> str_subset(c("a", NA, "b"), ".") #丢弃空值
[1] "a" "b"

(4)str_count(string, pattern = "")#返回字符串中所含匹配字符的个数

fruit <- c("apple", "banana", "pear", "pineapple")
str_count(fruit, "a")
[1] 1 3 1 1

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!