【R语言】字符串处理

使用R语言中的encoding参数指定编码格式 使用R语言中的encoding参数指定编码格式在R语言中,我们可以使用encoding参数来指定读取和写入文件时使用的编码格式。编码格式是用于表示文本字符的二进制表示的规则集合。不同的编码格式可以支持不同的字符集和语言。在本文中,我们将详细介绍如何使用encoding参数来指定编码格式,并提供相应的源代码示例。 阅读详情

        在挖掘分析的过程当中对字符串的处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台,虽然文本的处理并不是它的强项, 但是R语言还是包含大量的字符串操作工具,本章着重整理了部分常用字符处理函数及其使用方法。


5.1 基本字符操作

1) 字符长度统计

length(x)函数 — 返回向量x的长度,或者说向量中元素的个数;

nchar(x)函数  — 返回向量x中的每个元素的字符个数,对于非字符元素会得到不可预料的结果。

–       举例1:

x <-c("R", "Rstudio", "Revolution R")

# 返回3,向量x中共有3个元素

length(x)

# 返回1 7 12,向量x中每个元素的字符个数

nchar(x)

 

–       举例2:

# 返回1,空向量长度为1

length("")

# 返回0,空向量字符长度为0

nchar("")

# 非字符元素NA,返回错误结果2

nchar(NA)

 

2) 字符大小写转换

toupper(x)函数 — 将字符矩阵x内各元素转化为大写形式;

tolower(x)函数 — 将字符矩阵x内各元素转化为小写形式;

casefold(x,upper = FALSE)函数 — 将字符矩阵x内各元素转化为大写或小写形式,默认为转换为小写,当upper =TRUE时转换为大写;

–        举例1:

x <- c("r", "rstudio", "revolutionR", NA)

# 转化x中的各元素为大写形式,NA依然返回NA

toupper(x)

# 转化x中的各元素为小写形式,NA依然返回NA

tolower(x)

# 转化x中的各元素为小写形式,默认upper = FALSENA依然返回NA

casefold(x)

# 转化x中的各元素为大写形式,设置upper = TRUENA依然返回NA

casefold(x, upper = TRUE)


5.2 字符串连接

字符串连接是较为常见的字符操作,在此R提供了强大的paste函数,它不仅可以实现字符串的连接,也可以实现字符向量的连接,无论是字符向量还是字符串,在连接前paste会把对象首先转换为字符而后进行连接,另外,当向量连接时,较短的向量会循环使用。

1) paste 函数 

基本语法:

paste (..., sep = " ", collapse = NULL)  

参数sep表示连接的分隔符,默认为一个空格,参数collapse作为合并成一个字符串时的分隔符,详情请见以下应用实例:

–        举例1:

x <- "Hello"; y <- "world"

paste(x, y)

#不设置sep,默认以空格分割

paste("A", 1:4) 

#设置sep,去掉空格分隔符

paste("A", 1:4, sep = "")

 

–        举例2:

#字符向量的连接,较短的字符循环被使用

paste(c("a", "b"), 1:3, sep = "")

 

–        举例3:

#连接前隐式转换为字符串

name <- c("Kingsley", "William","Tom");

age <- c(30, 20, 10); 

person <- data.frame(name, age)

#返回结果"NJc(1,3, 2)"    "NJc(30, 20,10)"

paste("NJ", person, sep ="") 

注: 数据框内的字符串会默认转换为因子(依赖于stringsAsFactors参数的设置,默认为True,即字符会被转换为因子类型),然后paste连接的时候会进行隐式转换,默认转换为字符型连接,所以使用paste函数时,有时候并不能得到想要的结果。

 

–        举例4:

#使用collapse参数, collapse的使用可使连接后的字符组成一个字符串

#返回字符串A1,A2,A3,A4

paste("A", 1:4, sep ="" ,collapse = ",")

 

2) paste0 函数

基本语法:

paste0(..., collapse = NULL)  

参数意义paste与函数相同, 不同之处在于sep默认设置为空字符。

–        举例1:

#结果中没有空格分隔符

paste0("A", 1:4)  

 

3) sprintf函数

基本语法:

sprintf(fmt,...)

sprintf表示字符串“打印”,把若干元素按照给定的格式组合赋值给字符串。fmt表示包含格式字符的字符向量,sprintf中的参数会循环使用。

–        举例1:

#以固定长度输出月份的名称,fmt被循环使用,长度不足在字符前面补空格

sprintf("%09s", month.name)

#以固定长度输出月份的名称,fmt被循环使用,长度不足在字符后面补空格

sprintf("%-9s", month.name)

 

–        举例2:

#向量元素按顺序组合

sprintf(c("Name:%s", "Age: %s"), c("Kingsley", "30"))

 

–        举例3:

#以指定格式输出圆周率

sprintf("%f",pi)

sprintf("%.3f",pi)

sprintf("%1.0f",pi)

sprintf("%5.1f",pi)

sprintf("%05.1f",pi)

sprintf("%+f",pi)

sprintf("%f", pi)

sprintf("%-10f",pi) # left justified

sprintf("%e",pi)

sprintf("%E",pi)

sprintf("%g",pi)

sprintf("%g",   1e6 * pi) # -> exponential

sprintf("%.9g",1e6 * pi) # -> "fixed"

sprintf("%G",1e-6 * pi)

 

4) cat函数

基本语法:

cat(... , file ="", sep = " ", fill = FALSE, labels = NULL,

    append = FALSE)

cat函数用于连接字符串并输出到文件,默认file为空直接输出;sep表示连接的分隔符,默认为一个空格;fill逻辑值,为FALSE只有显式地使用“\n”才会换行输出,为TRUE只要达到选择宽度即可换行;labels为行标签,只在fill = TRUE时有效,若设定的行数小于实际行数,则会循环使用。append逻辑值,为FALSE会覆盖之前的输出,否则在原来内容后添加新输出。

–        举例1:

#连接字符串,此处A不会循环使用

cat("A", 1:4, sep= " ")

 

–        举例2:

#换行输出到文件abc.txt,每行都有相应的行标签

cat(paste(letters, 100*1:26), file = "abc.txt", fill = T, labels = paste0("{",1:10, "}:"))


5.3 字符匹配

R语言有多重方法判断特定元素(vector)在另一个元素(vector)中是否存在匹配的元素。下面逐一介绍各种方法:

1.    match函数族

match函数族用于匹配字符时返回匹配或部分匹配的元素下标,匹配参数不支持正则表达式。

1)    match函数

基本语法:

match(x, table,nomatch = NA_integer_, incomparables = NULL)

 其中参数nomatch表示不匹配时的返回值(默认为NA,强制为integer型),incomparables指定不能用来匹配的值(vector),因此incomparables中配置的值,即使x在table中得到匹配也会由nomatch代替。match函数要求完全匹配

–       举例1:

#return 2,字符mn匹配字符向量第二个元素的值

match("mn",c("ab", "mn", "xy"), nomatch = NA)

 

–       举例2:

#return 1,字符mn匹配字符向量第一以及第二个元素的值,返回第一个元素下标

match("mn",c("mn", "mn", "xy"), nomatch = NA)

 

–       举例3:

#return NAincomparables包含了字符值mn,因此即使匹配也返回NA

match("xy",c("ab", "mn", "xy"), nomatch = NA,incomparables = c("mn", "xy"))

 

函数%in%,实际可表示为match函数,不同的是返回值为逻辑向量

"%in%"<- function(x, table) match(x, table, nomatch = 0) > 0

–       举例1:

#返回长度为10的逻辑向量,存在的为TRUE,不存在为FALSE

1:10 %in%c(1,3,5,9)

 

–       举例2:

#返回sstr中存在于26个字符中的元素,包括大小写

sstr <-c("c","ab","B","bba","c",NA,"@","bla","a","Ba","%")

sstr[sstr %in%c(letters, LETTERS)]

 

2)    pmatch函数

R语言中使用stringr包的str_detect函数可以检测一个字符串中是否存在指定的模式 通过使用str_detect函数,我们可以方便地检测字符串中是否存在指定的模式。R语言中使用stringr包的str_detect函数可以检测一个字符串中是否存在指定的模式。运行以上代码,输出的结果将是一个逻辑值向量,指示字符串中每个位置是否存在数字。运行以上代码,输出的结果将是一个逻辑值向量,指示字符串中每个位置是否存在模式。运行以上代码,输出的结果将是一个逻辑值向量,指示每个字符串中是否存在模式。,表示字符串"apple"和"banana"中存在模式"a",而字符串"orange"中不存在。 阅读详情

相关推荐

R语言提取字符串中的子串:使用substr函数提取字符串中后面几个字符(extract last n characters)

R语言提取字符串中的子串:使用substr函数提取字符串中后面几个字符(extract last n characters)

statistics+insight+vista+power 1771

R语言 | 进阶字符串处理

详细介绍了R语言中进阶字符串处理的相关内容以及代码实现。

天下弈星~的博客 1907

R语言字符串操作

R语言主要擅长于数值向量和矩阵操作,但是让他去做字符串操作也可以。 字符串的基本操作类型: 查找和替换 大小写转换 字符数统计 字符串连接和拆分 就我所知,有两套处理函数,一套是Hadley大神的stringr,一套是R自带的。 stringr使用指南 stringr函数主要分为四类: 1.字符操作操作字符向量中的单个符str_length,str_s...

xuzhougeng blog 5460

R语言字符串处理

字符串是计算机科学和编程中非常重要的数据类型。对于数据分析、文本处理和自然语言处理等领域,字符串操作显得尤为重要。R语言作为一种广泛应用于数据科学和统计分析的语言,提供了丰富的字符串处理功能。本文将详细介绍R语言中的字符串处理,包括字符串的创建、基本操作、常用函数及应用示例。

2501_90777188的博客 998

字符串处理_R语言stringr字符串处理

前言实际工作中,经常需要处理字符串。R包stringr处理字符相对简单,尤其是我常用Power BI,但是对M语言不熟悉,不会处理字符数据,往往我就先利用R清洗字符数据列。本文记录工作中常用的字符处理函数,部分案例照搬R for Data Science的字符部分。Excle中自带的字符函数如: left,len,mid,find,Proper,rept,trim,upper,subst...

weixin_42627459的博客 1934

R语言字符串处理函数

R笔记——基础 主要把学习工作中遇到的一些基础知识记下来,方便查看。 tryCatch() result &lt;- tryCatch({ }, warning = function(w){ }, error = function(e){ paste0('错误: ', e) #这里的e就是字符串 }, finnally = { } ) tryCatch()本身是一个函数,...

hello world! 3696

R语言-用stringr包处理字符串

library(stringr)   # 合并字符串 fruit res str_c('I want to buy ',res,collapse=' ')   # 计算字符串长度 str_length(c("i","like","programming R",123,res))   # 按位置取子字符串 str_sub(fruit,1,3) # 按位置取子字符串

智慧与美貌并存 4万+

R语言字符串处理总结

在挖掘分析的过程当中对字符串处理是极为重要的,且出现也较为频繁,R语言作为当前最为流行的开源数据分析和可视化平台,虽然文本的处理并不是它的强项, 但是R语言还是包含大量的字符串操作工具,本章着重整理了部分常用字符处理函数及其使用方法。 5.1 基本字符操作 1) 字符长度统计 length(x)函数 — 返回向量x的长度,或者说向量中元素的个数; nchar(

立身以力学为先,力学以读书为本。 —郑耕老《劝学》 2868

r 语言c函数,R语言中的字符串处理函数

内容概览尽管R是一门以数值向量和矩阵为核心的统计语言,但字符串有时候也会在数据分析中占到相当大的份量。R语言是一个擅长处理数据的语言,但是也不可避免的需要处理一些字符串(文本数据)。如何高效地处理文本数据,将看似杂乱无章的数据整理成可以进行统计分析的规则数据,是『数据玩家』必备的一项重要技能。在编程语言里,文本处理绝对是一大热门,作为数据统计分析最热门的R语言,虽然处理方法没有其他的文本的编程语言...

weixin_42210284的博客 2116

R语言:文本处理字符串处理)的常用函数

文字太多,一眼找不到要找的内容? Ctrl+F 即可查找~  R语言处理字符串主要用到base包(R语言自带)和stringr包(需下载安装)的一些函数,现总结如下:1、字符串长度  nchar()函数用于计算字符串长度;nzchar()函数则用于判断字符串长度是否大于0,大于0则返回TRUE,否则返回FALSE。  函数参数设置如下:  nchar(x, type = "chars",allo...

偷闲阁 2万+

c 语言r字符串处理,R语言字符串处理大全

数据分析师的日常工作就是数据预处理,数据预处理最经常遇到的问题就是字符串处理,这部分很难,我以前看过一些R的书和一些技术博客,现在依旧发现有些细节做不好,下面我就转载别人的一些字符串处理的方法,我会在下面说说我的看法:字符串分割函数:strsplit( )字符串连接函数:paste( )计算字符串长度:nchar( )字符串截取函数:substr( )及substring( )字符串替换函数:c...

weixin_30991277的博客 361
上一篇: 【SQL Server】统计信息实战+实用SQL语句
下一篇: 【SQL Server】获取指定表上的索引信息(SQL版)
Kingsley_W
博客等级 码龄18年 182粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值