r - 提取括号内的字符
问题描述
我有从 .csv 文件导入的数据。第一列包含包含括号内的文本的字符串。数据如下:
symbol
___________________________________________
1 | Apollo Senior Floating Rate Fund Inc. (AFT)
2 | Apollo Tactical Income Fund Inc. (AIF)
3 | Altra Industrial Motion Corp. (AIMC)
4 | Allegion plc (ALLE)
5 | Amphenol Corporation (APH)
6 | Ares Management Corporation (ARES)
7 | ARMOUR Residential REIT, Inc. (ARR)
8 | Banc of California, Inc. (BANC)
9 | BlackRock Resources (BCX)
10| Belden Inc (BDC)
...
我需要将该列数据转换为一个列表,例如:
symbol2
___________________________________________
1 | AFT
2 | AIF
3 | AIMC
4 | ALLE
5 | APH
6 | ARES
7 | ARR
8 | BANC
9 | BCX
10| BDC
...
我的最终目标是获得一个字符串,其中括号绑定的文本由“;”分隔 像这样:
"AFT;AIF;AIMC;ALLE;APH;ARES;ARR;BANC;BCX;BDC;..."
我可以做这最后一步
paste(symbol2, collapes = ";")
但我不知道如何隔离所需的文本。
我已经尝试了此处列出的所有内容(根据模式在 R 中提取子字符串),方法是将“:”替换为“(”,但无法正常工作。我试过了:
gsub("(?<=\\()[^()]*(?=\\))(*SKIP)(*F)|.", "", symbol, perl=T)
按照这里的建议(在 R 的括号中提取文本),但输出是
"c(4, 5, 2, 1, 3, 6, 7, 8, 17, 9,...)"
有什么帮助吗?
解决方案
我们可以使用str_extract
from提取内容stringr
library(stringr)
symbol2 <- str_extract(df$symbol, "(?<=\\().+?(?=\\))")
symbol2
#[1] "AFT" "AIF" "AIMC" "ALLE" "APH" "ARES"
正则表达式取自这里。
然后你可以paste
把它们放在一起
paste(symbol2, collapse = ";")
#[1] "AFT;AIF;AIMC;ALLE;APH;ARES"
推荐阅读
- python - PySpark - 读取 csv 跳过自己的标题
- jenkins - Jenkinsfile if (env.someBool.toBoolean() != false) 反对可能的 null
- python - 没有名为“MySQLdb”的模块?
- javascript - 根据 prop 值创建 JSX 元素
- javascript - WordPress:使用额外选项扩展 Gutenberg 中的标题块
- css - sass 嵌套不像我想象的那样工作
- json - 如何使用 gcloud 命令仅从 json 中提取名称字段?
- maxima - 如何获得最大值以有效地简化日志
- yocto - Yocto:如何根据两个选项值确定 SRC_URI 值
- python - 我应该如何检查我的函数中的参数是整数还是浮点数?