R:字符串截取和匹配

  1. 在指定位置截取字符串-substr() & substring() & do包 & gsub()

#substr必须设置参数first和last,否则出错
> substr("1234567",3,5)
[1] "345"
#substring可以只设置first参数,last参数缺省时则默认为1000000,指字符串的最大长度。
> substring("1234567",3)
[1] "34567"

R基础|do包(1):左截取、右截取、中间截取-腾讯云开发者社区-腾讯云 (tencent.com)

2.根据正则表达式灵活截取字符串-str_match()

library(stringr)
#提取字符串内容但无标签
> str_match(string = "ID=12-3456;name=Griffy;age=0",
+           pattern ="ID=(.*);name=(\\w+);") #.*表示匹配多个任意字符;\\w+表示匹配多个字母或数字
     [,1]                      [,2]      [,3]    
[1,] "ID=12-3456;name=Griffy;" "12-3456" "Griffy"

#提取字符串的同时给提取内容加上标签(格式:(?<标签名>匹配模式))
> str_match(string = "ID=12-3456;name=Griffy;age=0",
+           pattern ="ID=(?<ID>.*);name=(?<name>\\w+);")
                               ID        name    
[1,] "ID=12-3456;name=Griffy;" "12-3456" "Griffy"
#上述得到的数据类型为matrix,也可以进一步转化为数据框的格式方便后续操作
ID_name <- str_match(string = "ID=12-3456;name=Griffy;age=0",
          pattern ="ID=(?<ID>.*);name=(?<name>\\w+);")
ID_name <- data.frame(ID_name)

3.截取特定字符前面的字符串-gsub()

#截取"ABC"
m <- "ABC CDE"
#gsub()用""替换" (.*)"空格加任意字符
a <- gsub(pattern = " (.*)", "", m)
#得到的a为character

4.字符串匹配-grepl

> grepl("G", "Griffy")
[1] TRUE
> grepl("G",c("Griffy","Grape","sky"))
[1]  TRUE  TRUE FALSE
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值