r语言tidyverse教程:5 字符串处理stringr

这篇具有很好参考价值的文章主要介绍了r语言tidyverse教程:5 字符串处理stringr。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

R语言系列:

  • 编程基础💎循环语句💎向量、矩阵和数组💎列表、数据帧
  • 排序函数💎apply系列函数
  • tidyverse:readr💎tibble💎tidyr💎dplyr💎stringr

stringr

stringrtidyverse的字符串处理函数,和R语言原生的字符串处理函数相比,其API风格统一,功能完备,十分推荐使用

功能 函数
拼接与分割 str_cstr_split, str_split_fixed
定位;匹配;提取 str_locatestr_matchstr_extract
删除;替换 str_removestr_replace
检测;计数 str_detectstr_count
格式化 str_glue
头尾修饰 补齐str_pad;删除str_trim, str_squish
大小写转换 str_to_lower, str_to_upper, str_to_title, str_to_sentence
复制 str_dup
排序 str_sort, str_order
截取 str_sub, str_subset, str_which
字符串长度 str_length

拼接与分割

str_c为字符串拼接函数;可以拼接字符和字符数组,关键字collapse为折叠符,用于连接数组内的字符;sep为分隔符,用于连接数组间或者字符串间的字符。

library(stringr)

str_c("a","b")    # 返回 ab

# 下面三个均返回a_b
str_c("a","b",sep = "_")
str_c(c("a"), c("b"), sep="_")
str_c(c("a","b"), collapse="_")


# 返回a/c_b/d
str_c(c("a","b"),c("c","d"),sep = "/",collapse = "_")

分割函数有两个,str_splitstr_split_fixed,后者可以指定分割块数。参数pattern表示分隔符,当pattern=""时,将字符串分割成单个字符。通过simplify可指定返回的数据类型,T返回矩阵。

# 字符分割,"b" "a" "n" "a" "n" "a"
str_split("banana", "")

# 字符分割,返回矩阵
str_split("banana","a",simplify = T)

"返回值如下
     [,1] [,2] [,3] [,4]
[1,] "b"  "n"  "n"  ""  
"

# 指定分割块数
str_split_fixed("banana", "", n = 3)

##      [,1] [,2] [,3]  
## [1,] "b"  "a"  "nana"

检测计数

str_count用于计数,str_detect用于检测,二者的区别在于,检测只返回TRUE或者FALSE,计数则在此之上返回具体个数

# 单个目标字符计数,返回1 1 0
str_count(string = c("sql","json","java"),pattern = "s")

# 多个目标字符计数 返回1 1 2
str_count(string = c("sql","json","java"),pattern = c("s","j","a"))

# 元字符查找计数(fixed包裹元字符) 返回2
str_count(string = "a..b",pattern = fixed("."))

str_detect(string = c("sql","json","java"),pattern = "s")
## 返回 TRUE  TRUE FALSE

定位、提取、匹配、删除、替换

定位、提取、匹配的操作逻辑是相似的,区别在于返回值,定位返回的是匹配字符的位置;提取和匹配则返回匹配值。而删除和替换功能则必须基于匹配、定位的基础上。这四种功能均有两种实现,后面带有_all的,表示返回所有匹配,否则只匹配第一个。

定位 str_locate str_locate_all
提取 str_extract str_extract_all
匹配 str_match str_match_all
删除 str_remove str_remove_all
替换 str_replace str_replace_all

此外,替换还有一个简单的str_replace_na函数,用于将NA替换成字符串"NA"

# 定位
> str_locate_all("banana", "an")

# [[1]]
#      start end
# [1,]     2   3
# [2,]     4   5


# 匹配
str_match_all("banana", "an")

# [[1]]
#     [,1]
# [1,] "an"
# [2,] "an"

# 提取
str_extract_all("banana", "an")

## [[1]]
## [1] "an" "an"

# 提取,返回矩阵
str_extract_all("banana", "an", simplify = T)
#      [,1] [,2]
# [1,] "an" "an"

# 删除 返回"ba"
str_remove_all("banana", "an")

# 替换 返回bANANa"
str_replace_all("banana", "an", "AN")

格式化

尽管字符串格式化函数只有str_glue,但头尾修饰、大小写转换也可以理解为一种格式化方案,所以归类在一起。

其中str_glue的逻辑是,识别字符串中的{},并将花括号中的内容理解为变量,然后将变量转换为字符串,是很现代的处理方法

name <- "jack"
age <- 12
str_glue("I'm {name}, {age} years old.")
# 返回I'm jack, 12 years old.

str_pad可在字符串的左右两侧添加单个字符;str_trim可删除左右两侧的空格;str_squish可删除字符串中多余的空格。

# 默认字符串左边补齐 width用于指定宽度 返回"00114514"
str_pad(string = "114514", width = 8, pad = "0")

# 字符串右边补齐 返回"114514xx"
str_pad("114514", 8, side = "right", pad = "x")

str_pad("114514", 8, "both", "0") # 返回01145140

str_trim("  I'm   jack  ")    # 返回 "I'm   jack"
str_squish("  I'm   jack  ")  # 返回 "I'm jack"

大小写转换语句中,str_to_title会将所有单词首字母转大写,其他字母小写;str_to_sentence则只将句首第一个字母转为大写,其他字母小写。

stringr包中其他的有用函数,用于常见的字符处理。

# 字符转为小写
str_to_lower("I'm jack")  # 返回 "i'm jack"
str_to_upper("I'm jack")  # 返回 "I'M JACK"
str_to_title("I'm jack")  # 返回 "I'm Jack"
str_to_sentence("I'm Jack") # 返回 "I'm jack"

其他函数

str_sort返回排序后的字符串数组;str_order则返回排序后的索引向量。排序函数默认升序,若将decreasing设为TRUE,则采用降序

# 降序排序,返回"sql"    "python" "json"
str_sort(c("sql","json","python"), decreasing = TRUE)

# 升序排序,返回索引向量 2 3 1
str_order(c("sql","json","pythn"))

str_sub通过指定开始和结束位置,得到子串,当索引值为正时,表示正数,为负数表示倒数。str_subset, str_which则通过匹配模式,过滤出满足模式的字符串。

# 字符过滤 从第1个到倒数第2个 返回 banan
str_sub("banana", start = 1,end = -2)

# 字符串过滤 ^s为正则表达式语法,表示是开头 返回 sql
str_subset(string = c("java","sql","python"),pattern = "^s")

# 字符串过滤,返回匹配字符串位置  返回2
str_which(string = c("java","sql","python"),pattern = "^s")

str_dup可将字符向量重复若干次,并返回重复后的字符向量。

str_dup(c("I", "m", "jack"),times = 2)

## [1] "II"       "mm"       "jackjack"

str_length可以返回字符串长度文章来源地址https://www.toymoban.com/news/detail-444020.html

str_length("banana") # 返回 6

到了这里,关于r语言tidyverse教程:5 字符串处理stringr的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C语言】深入精讲字符串处理函数使用与优化

    目录 一、字符串处理函数 1、测量字符串的长度 strlen 2、字符串拷贝函数 strcpy/strncpy(拷贝前n个字符)  3、字符串追加函数strcat/strncat 4、字符串比较函数strcmp  5、字符查找函数strchr/strrchr  6、字符串查找strstr 7、字符串替换函数memset 8、字符串 切割 strtok  二、字符串转数值

    2024年02月17日
    浏览(47)
  • 【自然语言处理】NLP入门(一):1、正则表达式与Python中的实现(1):字符串构造、字符串截取

       语言 是一种使用具有共同处理规则的沟通指令的广义概念,这些指令可以通过视觉、声音或触觉等方式传递。语言可以分为自然语言、动物语言和计算机语言。    自然语言 是人类发展过程中形成的一种信息交流方式,它包括口语和书面语,并且反映了人类的思想。

    2024年03月12日
    浏览(142)
  • 【Golang】Golang进阶系列教程--为什么说 Go 语言字符串是不可变的?

    最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说 Go 语言字符串是不可变的,这是为什么呢? 这个问题本身并不困难,但对于新手来说确实容易产生困惑,今天就来回答一下。 首先来看看它的底层结构: 和切片的结构很像,只不过少了一个

    2024年02月14日
    浏览(59)
  • Python入门教程:掌握for循环、while循环、字符串操作、文件读写与异常处理等基础知识

    在 Python 中,for 循环用于遍历序列(list、tuple、range 对象等)或其他可迭代对象。for 循环的基本语法如下: 其中, 变量 表示每次循环中取出的一个元素, 可迭代对象 表示被遍历的对象。下面是一个 for 循环的例子: 输出结果为: 代码中, fruits 是一个列表, fruit 是当前循

    2024年02月10日
    浏览(58)
  • 字符串变换最小字符串(C语言)

    给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。 一串小写字母组成的字符串s 按照要求进行变换得到的最小字符串。 输入 abcdef 输出 abcdef 说明 abcdef已经是最小字符串

    2024年02月22日
    浏览(32)
  • LeetCode 2788.按分隔符拆分字符串:模拟(字符串处理)

    力扣题目链接:https://leetcode.cn/problems/split-strings-by-separator/ 给你一个字符串数组 words 和一个字符 separator ,请你按 separator 拆分 words 中的每个字符串。 返回一个由拆分后的新字符串组成的字符串数组, 不包括空字符串 。 注意 separator 用于决定拆分发生的位置,但它不包含在

    2024年01月21日
    浏览(57)
  • c语言字符串转数字,数字转字符串

    目录 一、字符串转数字 1. 标准库转换 atoi(),字符串转换成整型数 atol(),字符串转换成长整型数 atof()字符串转换为浮点值 atoll(),字符串转换成长长整型数 strtod(),字符串转换为浮点数  strtol(),将字符串换成长整型数 二、数字转字符串 1. 通过C语言标准库函数 itoa(),整数转换成字符

    2024年02月02日
    浏览(37)
  • C语言:字符函数和字符串函数(一篇拿捏字符串函数!)

    目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. strncat(字符串追加) 7. strncmp(字符串比较) 字符串查找: 8. strstr(查找字符串子串) 9. strtok(字符串分割) 错误信

    2024年02月10日
    浏览(101)
  • linux字符串处理

    BUG 输出结果为: fox jumps over the lazy dog 输出结果为: fox feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0 memset包含在头文件string.h中,函数原型为:memset(void *s,int ch,size_t n)。 直接使用strcpy将一个空串赋值给字符串就可以,需要string.h 这段代码中

    2024年02月10日
    浏览(39)
  • C#字符串处理

    ​ToUpper和ToLower方法 ​ Encoding n.[计]编码 v. [计]编码(encode 的 ing 形式) The audio tag is not compatible with the browser you are using. 运行.NET Core或.NET 5+的应用程序,这些版本的.NET不包括所有的编码。你需要注册System.Text.Encoding.CodePages包,然后使用Encoding.GetEncoding方法。 汉字转区位码

    2024年02月05日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包