R语⾔:⽂本处理(字符串处理)的常⽤函数
⽂字太多,⼀眼不到要的内容? Ctrl+F 即可查~
  R语⾔中处理字符串主要⽤到base包(R语⾔⾃带)和stringr包(需下载安装)的⼀些函数,现总结如下:
1、字符串长度
  nchar()函数⽤于计算字符串长度;nzchar()函数则⽤于判断字符串长度是否⼤于0,⼤于0则返回TRUE,否则返回FALSE。
  函数参数设置如下:
  nchar(x, type = "chars",allowNA = FALSE, keepNA = NA)
  nzchar(x, keepNA = FALSE)
  其中,参数x是要测长度的字符串,须是character型向量或者可以转化为character型的向量(如numeric型,但是不能是factor 型);
  参数type可以取chars,bytes和width,取chars时返回该字符串可视字符的个数,byte返回该字符串存储字节数,width返回该字符串显⽰在屏幕上的宽度;
  如果遇到⽆效的字符串,参数allowNA设为FALSE时函数报错,设为TRUE时,则会返回NA;
  如果遇到缺失值(NA),参数keepNA设为TRUE时,函数返回NA,设为FALSE时,则会将NA转化为字符串进⾏计算。
x <- c('abcd', 1379, '偷闲阁', NA)
nchar(x)
nchar(x, type = 'bytes')
nchar(x, keepNA = F)
2、查、替换字符串
  grep系列函数⽤于字符串的查和替换。
  grep()返回向量中包含所查字符(串)的元素在向量中的位置;
  grepl()则对向量中每个元素是否包含所查的字符(串)进⾏判断;
  sub()和gsub()⽤于替换字符串中的字符(串),其中sub()⽤于只对查到的第⼀个进⾏替换,gsub()则替换所有满⾜条件的字符(串);
  regexpr()、gregexpr()和regexec()⽤于查字符串中要寻的字符(串)所在位置,若不匹配则返回-1,其中regexpr()和regexec()只会返回第⼀个满⾜匹配关系的位置,只是两个函数的输出形式不⼀样,gregexpr()则返回所有满⾜匹配关系的位置;
  函数参数设置如下:
  grep(pattern, x, ignore.case = FALSE,perl = FALSE, value = FALSE,
    fixed = FALSE, useBytes = FALSE, invert = FALSE)
  grepl(pattern, x, ignore.case = FALSE,perl = FALSE,
   fixed = FALSE, useBytes = FALSE)
  sub(pattern, replacement, x,ignore.case = FALSE, perl = FALSE,
    fixed = FALSE, useBytes = FALSE)
  gsub(pattern, replacement, x,ignore.case = FALSE, perl = FALSE,
    fixed = FALSE, useBytes = FALSE)
  regexpr(pattern, text, ignore.case =FALSE, perl = FALSE,
    fixed = FALSE, useBytes = FALSE)
  gregexpr(pattern, text, ignore.case =FALSE, perl = FALSE,
     fixed = FALSE, useBytes = FALSE)
  regexec(pattern, text, ignore.case =FALSE, perl = FALSE,
    fixed = FALSE, useBytes = FALSE)
  其中,参数pattern即要查的字符(串);
  参数x或text是要在其中进⾏查的字符串(向量);
  参数replacement是要替换成的字符(串);
  参数fixed为TRUE时采⽤精确查;
  参数perl为TRUE时采⽤Perl正则表达式;
  参数fixed和perl都为FALSE时,使⽤POSIX1003.2扩展正则表达式;
  参数ignore.case为FALSE时匹配区分⼤⼩写,为TRUE时不区分⼤⼩写;
  参数value为TRUE时,grep函数的返回值为包含要查字符串的元素,⽽不是该元素在向量中的位置;  参数useBytes为TRUE时,匹配过程是逐字节进⾏的;
  参数invert为TRUE时,返回的是不匹配的项。
x <- c('describe', 'the', 'city', 'you', 'live', 'in')
grep('i', x)
grep('i', x, invert = T)
grep('i', x, value = T)
regexec('e', x)
regexpr('e', x)
gregexpr('e', x)
x <- 'initial'
sub('i', 'I', x) # 只有第⼀个i被替换
gsub('i', 'I', x) # 所有i被替换为I
3、拆分字符串
  strsplit()⽤于字符串的拆分。
  strsplit(x, split, fixed = FALSE, perl= FALSE, useBytes = FALSE)
  其中参数x是要处理的字符串,split是分割点。
x <- '2018-01-11'
false是什么函数
strsplit(x, '-')
4、拼接字符串
  paste()⽤于字符串的拼接。
  paste (..., sep = " ",collapse = NULL)
  paste0(..., collapse = NULL)
  参数...是要进⾏拼接的字符串,可以是多个元素或向量;
  参数sep是进⾏元素间拼接时使⽤的连接符;
  参数collapse是进⾏向量内拼接时使⽤的连接符。
a <- c('a', 'b', 'c')
b <- 1:3
paste(a, b)
paste(a, b, sep = '=')
x <- c('describe', 'the', 'city','you', 'live', 'in')
paste(x, collapse = ' ')
5、提取字符串
  substr系列函数⽤于提取字符串中的字符(串)。
  substr(x, start, stop)
  substring(text, first, last = 1000000L)
  参数x或text是要在其中进⾏提取的字符串(向量);
  参数start或first是提取的第⼀个字符所在位置;
  参数stop或last是提取的最后⼀个字符所在位置。
x <- '鞠躬尽瘁,死⽽后已。'
substr(x, 1, 4)
# substr和subsring也可以⽤来替换字符串的内容
substr(x, 1, 4) <- '诸葛亮说'
x
  提取字符串更⽅便的办法是使⽤stringr包的str_extract()和str_extract_all()函数。str_extract()只提取满⾜条件的第⼀个,str_extract_all()则提取全部。
  str_extract(string, pattern)
  str_extract_all(string, pattern, simplify = FALSE)
  其中,参数string是要处理的⽂本;
  参数pattern是要提取的字符形式,通常使⽤正则表达式;
  参数simplify为FALSE时返回的结果是list,为TRUE时返回matrix。
# 将所有数字提取出来
x <- '2018年01⽉01⽇'
str_extract(x, '[0-9]+[0-9]')
str_extract_all(x, '[0-9]+[0-9]')
str_extract_all(x, '[0-9]+[0-9]', simplify = T)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。