R海拾遗-stringr
时间:2022-07-25
本文章向大家介绍R海拾遗-stringr,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
stringr
sunqi
2020/8/13
概述
字符串处理比较优秀的包
代码
library(stringr)
library(tidyverse)
rm(list=ls())
#获取字符串长度
iris %>% mutate(len=str_length(Species)) %>% head()
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species len
## 1 5.1 3.5 1.4 0.2 setosa 6
## 2 4.9 3.0 1.4 0.2 setosa 6
## 3 4.7 3.2 1.3 0.2 setosa 6
## 4 4.6 3.1 1.5 0.2 setosa 6
## 5 5.0 3.6 1.4 0.2 setosa 6
## 6 5.4 3.9 1.7 0.4 setosa 6
# 字符串拼接
iris %>% mutate(z=str_c(Sepal.Length,Sepal.Width,sep="_")) %>% head()
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species z
## 1 5.1 3.5 1.4 0.2 setosa 5.1_3.5
## 2 4.9 3.0 1.4 0.2 setosa 4.9_3
## 3 4.7 3.2 1.3 0.2 setosa 4.7_3.2
## 4 4.6 3.1 1.5 0.2 setosa 4.6_3.1
## 5 5.0 3.6 1.4 0.2 setosa 5_3.6
## 6 5.4 3.9 1.7 0.4 setosa 5.4_3.9
# 字符串取子集
x <- c("Apple", "Banana", "Pear")
# 第一个参数为字符串
# 第二个参数为起始位置
# 第三个参数为长度
str_sub(x, 1, 3)
## [1] "App" "Ban" "Pea"
# str_sub支持赋值操作
str_sub(x, 1, 1) <- "Q"
x
## [1] "Qpple" "Qanana" "Qear"
# 对字符串进行匹配
# str_view()
x<-c("job","sex","hello")
# pattern 支持正则表达式
# str_view用于可视化观察
# 对于大数据没什么用,玩玩可以
str_view(string = x, pattern = "o")
- job
- sex
- hello
c("s.d") %>%
str_view("\.")# 双反斜杠用于转义字符
- s.d
# 开始匹配和末尾匹配
str_view(x, "^j")
- job
- sex
- hello
str_view(x, "x$")
- job
- sex
- hello
x <- c("apple pie", "apple", "apple cake")
str_view(x, "^apple$")
- apple pie
- apple
- apple cake
# 任意匹配
# d:匹配任何数字。
# s:匹配任何空格(如空格、制表符、换行符)。
# [abc]:匹配a, b或c。
# [^abc]除a、b、c之外,可以匹配任何字符。
str_view(c("sunqi", "suoqi"), "su[on]qi")
- sunqi
- suoqi
# 重复的问题
# 如果中间有100个任意字符,那么就需要有100个中括号
# 这是不合理的
# ? 匹配0或者1此
# + 1此或者无数次
# * 0次或者无数此
c("ssssddddswdsdsdsdsdss") %>% str_view("s?")
- ssssddddswdsdsdsdsdss
c("ssssddddswdsdsdsdsdss") %>% str_view("s+")
- ssssddddswdsdsdsdsdss
c("ssssddddswdsdsdsdsdss") %>% str_view("s*")
- ssssddddswdsdsdsdsdss
#也支持正则中的{}
c("ssssddddswdsdsdsdsdss") %>% str_view("s{2}")
- ssssddddswdsdsdsdsdss
c("ssssddddswdsdsdsdsdss") %>% str_view("s{2,3}")
- ssssddddswdsdsdsdsdss
# 回溯引用
fruit1 <- fruit %>% head(10)
# 提取有相邻重复字符的字符
# (.)匹配任意字符
# \1 再次匹配
str_view(fruit1, "(.)\1", match = TRUE)
- apple
- bell pepper
- bilberry
- blackberry
- blackcurrant
- blood orange
- blueberry
# 匹配abab, wcwc
# 两个点表示两个字符
str_view(fruit1, "(..)\1", match = TRUE)
- banana
# 匹配abba, wccw
# 1和2表示位置
str_view(fruit1, "(.)(.)\2\1", match = TRUE)
- bell pepper
# 匹配anan
str_view(fruit1, "(.)(.)\1\2", match = TRUE)
- banana
结束语
stringr的字符匹配需要一定的正则表达式知识,除非做文本挖掘,其实也不需要深究。
love&peace
- DeveWork.com 上线“前端工具箱”(附源码下载)
- Debug和Release之本质区别
- ArgoUML -- 开源UML 建模工具
- 性能分析工具-PerfView
- c#测试字符串是否为GUID的几种方法
- 编译错误CS1595
- 分享一款带尖角浮出 公告栏 样式
- 在asp.net页面上得到Castle容器的实例
- WordPress自带TinyMCE编辑器相关功能增强
- 联众互动收购3家棋牌游戏公司,其域名买自蔡文胜手中
- 未来有什么工作绝对不会被人工智能取代
- WordPress在RSS Feed 中输出版权信息
- WordPress免插件仅代码实现文章浏览次数的方法(2)
- 苹果被告了,但网友们却觉得一点也不亏!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu18 给terminal改个漂亮的命令行提示符的方法
- leetcode树之将有序数组转换为二叉搜索树
- 在 Ubuntu 上安装 Protobuf 3 的教程详解
- protobuf简单介绍和ubuntu 16.04环境下安装教程
- Ubuntu解决火狐浏览器无法同步书签的问题【推荐】
- Ubuntu添加swap分区的方法
- linux文件目录管理命令整理总结
- C++核心准则SF.8:为所有的.h文件使用包含监护
- 利用logsave如何将命令输出保存起来
- CentOs下安装gcc/g++/gdb的方法
- 详解firewall的规则设置与命令(白名单设置)
- 二叉树:构造一棵最大的二叉树
- Ubuntu16.04 ext4格式硬盘挂载普通用户权限控制的操作方法
- Apache Spark 2.0 在作业完成时却花费很长时间结束
- centos 6.9 升级glibc动态库的详细过程