首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R for data science之stringr包

作者简介Introduction

stringr包常用函数总结

stringr包是伟大的Hadley Wickham开发的处理字符串的程序包,该包包含的函数如下图:

这篇文章我会给大家举例讲解其中的几个常用函数,如果大家想详细的了解每个函数的具体用法,可以使用帮助函数help()去查看。

一、初识字符串

字符串是几乎在所有编程语言中可以实现的非常重要和有用的数据类型。下面给大家在R中去展示的字符串:

str1

str2

str3

str4

str1; str2; str3; str4

class(str1)

上面的代码中,我们首先创建了四个字符串,分别是str1、str2...。然后我们分别输出这四个字符串,顺便使用class函数查看了其类别,返回“character”。

二、处理字符串的常用操作

对字符串的常用操作包括:获取字符串长度、获取字符串中某些字符的个数、字符串的拼接、拆分、匹配、替换、格式化字符串。

## 获取字符串长度

首先使用base包里面的nchar函数计算其长度,然后使用stringr包中的str_length函数和str_count函数计算字符串长度。

nchar(str1)

nchar(c(str2, str3, str4))

library(stringr)

str_length(str1)

str_length(c(str2, str3, str4))

str_count(str1)

str_length(c(str2, str3, str4))

## 对比nchar和str_length函数的计算速度

system.time(nchar(rep(c(str2, str3, str4), 1000000)))

system.time(str_length(rep(c(str2, str3, str4), 1000000)))

通过上面的对比,大家可能会有一个疑问:为什么stringr中的str_length和str_count函数的作用都是计算字符串的长度?实际上str_length函数的作用就是计算其长度,但是str_count函数还有其他的作用,即统计指定字符的个数。通过上面三个函数的计算速度对比,大家也就知道那个函数在计算字符串长度时效率高了。

## 计算字符串中某类字符的个数

在这种情况下,经常使用正则表达式去进行匹配。(正则表达式可以去百度搜索,由于比较多,我就不截图占篇幅了。)

str_count(str1, '[A-Z]') # 计算大写字母的个数

str_count(str1, '[a-z]') # 计算小写字母的个数

str_count(str4, '[0-9]') # 计算数字的个数

str_count(str4, '\\d') # 计算数字的个数

str_count(str4, '\\W') # 计算任意非数字、大小写字母和下划线的个数

## 字符串拼接

paste(str3, str4)

paste(str2, str3, sep = ': ')

paste(rep(str2, 2), rep(str3, 2), sep = ':', collapse = '; ')

str_c(str3, str4)

str_c(str2, str3, sep = ': ')

str_c(rep(str2, 2), rep(str3, 2), sep = ':', collapse = '; ')

我们同样是使用了base包里面的paste函数和str_c函数进行字符串拼接的对比,用法一样。不过没有做批量的拼接对比,实际上结果是和上面的计算长度一致,批量处理时,stringr包里面的函数销量高。

## 字符串拆分

str_split(str4, '\\W', simplify = T) # 按照标点符号拆分字符串,返回矩阵

str_split_fixed(str4, '\\W', 2) # 按照标点符号拆分字符串,指定拆分为2部分

## 字符串匹配

str_extract(str4, '[0-9]+') # 匹配字符串中的数字

str_sub(str3, 2, 13) # 匹配字符串中某个具体未知的字符

str_sub(str3, 2, -2) # 同上

str5

str_subset(str5, "a") # 匹配字符串中包括‘a’的字符串

str_subset(str5, "^a") # 匹配字符串中开头是‘a’的字符串

str_subset(str5, "a$") # 匹配字符串中结尾是‘a’的字符串

str_locate(str4, 'com') # 匹配字符串中指定字符的位置

## 字符串替换

str_replace(str1, 'Wu', 'wu') # 匹配“Wu”,替换为“wu”

str_replace_all(str3, '[《》]', '') # 匹配“《》”,替换为“”(空)

## 格式化字符串

str_to_lower(str1) # 将所有的字符转换为小写

str_to_upper(str1) # 将所有的字符转换为大写

str_to_title(str1) # 将所有的字符转换为标题格式

str_to_title('this is a string') # 将所有的字符转换为标题格式

今天就写这点吧,还有很多字符串处理的函数。stringr包里面的各种处理字符串的函数的效率比较高,建议多尝试使用。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180203G0D3QN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券