r - 尝试有条件地将字符串的子部分提取到新列中
问题描述
我试图只提取符合特定标准的字符串的一部分。我有一列由 1、2 或 3 个值组成,作为包含一个相似部分的字符串,例如,
c( " apa1 ghg2 PA0134", "qrz3 PA2858", "PA5103", "gan3 jgr3 PA4301").
我想只PAxxxx
从字符串中收集值,或者将它分成 3 列,但只有一个PAxxxx
值。
我尝试过使用gsub
单独或子字符串的各种化身。但这些都依赖于一致的长度或条目数量。任何开始都会有所帮助。
解决方案
这是一个带有str_extract
from的选项stringr
。指定单词边界(\\b
),后跟子字符串“PA”和一个或多个字符
library(stringr)
str_extract(v1, "\\bPA\\w+")
#[1] "PA0134" "PA2858" "PA5103" "PA4301"
read.csv
如果我们想作为一列,那么我们可以用from分成两列base R
read.csv(text = sub("\\b(PA)", ",\\1", v1),
header = FALSE, stringsAsFactors = FALSE)
# V1 V2
#1 apa1 ghg2 PA0134
#2 qrz3 PA2858
#3 PA5103
#4 gan3 jgr3 PA4301
数据
v1 <- c("apa1 ghg2 PA0134", "qrz3 PA2858", "PA5103", "gan3 jgr3 PA4301")
推荐阅读
- ruby-on-rails - 构建 ruby on rails 应用程序时,捆绑安装在 docker 上失败
- javascript - 无法使用最终对象中的键设置项目
- r - 使用 R 中 ggplot2 的 facet_wrap 功能对多个数据集进行箱线图比较?
- flutter - Flutter - 在 PopupMenuButton 中导航 onTap 不起作用
- html - 如何使用 html/css/jquery 更改到一个?
- python - 在不使用循环的情况下在 python 中尝试扩散受限聚合模拟
- firebase - Flutter 的 Firebase 存储:使用“addOnFailureListener”检查元数据是否存在时出错
- azure-web-app-service - Azure 应用服务环境 (ASEv3) 中的 Docker 撰写失败
- javascript - 为什么 fullcalendar 给出它不提供名为“默认”的导出的错误?
- algorithm - 在 O(n^2) 时间内找到最大集团?