r - 更改行中的字符串组合 df R
问题描述
我需要修改行中的某些值。这是我的df:
name ref
4 SCF(SAF1)-AAH1 16677311
5 SCF(SAF1)-AAH1 17517885
12 ND(RSP5)-ACK1 15955809
13 ND(RSP5)-ACK1 17551511
49 ND(RSP5)-ALG6 17551511
52 ND(RSP5)-ALR1 11279208
需要将第 12-13-49-52 行修改为
RSP5-ACK1,
RSP5-ALG6
等等。所以我需要删除 ND 和 () 而不更改不以“ND”开头的行为 4-5。
解决方案
读入数据
dfr <- tibble::tribble(
~id, ~name, ~ref,
4, "SCF(SAF1)-AAH1", "16677311",
5 , "SCF(SAF1)-AAH1", "17517885",
12 , "ND(RSP5)-ACK1", "15955809",
13 , "ND(RSP5)-ACK1", "17551511",
49 , "ND(RSP5)-ALG6", "17551511",
52 , "ND(RSP5)-ALR1", "11279208"
)
这是执行此操作的一种方法:
dfr$name2 <- sub("ND\\(([^\\)]+?)\\)", "\\1", dfr$name, perl = TRUE)
dfr
结果:
# A tibble: 6 x 4
id name ref name2
<dbl> <chr> <chr> <chr>
1 4 SCF(SAF1)-AAH1 16677311 SCF(SAF1)-AAH1
2 5 SCF(SAF1)-AAH1 17517885 SCF(SAF1)-AAH1
3 12 ND(RSP5)-ACK1 15955809 RSP5-ACK1
4 13 ND(RSP5)-ACK1 17551511 RSP5-ACK1
5 49 ND(RSP5)-ALG6 17551511 RSP5-ALG6
6 52 ND(RSP5)-ALR1 11279208 RSP5-ALR1
您还可以使用该sub
函数代替gsub
,或稍微更改正则表达式,具体取决于您的ND(something)-XYZ
值的混乱程度。
推荐阅读
- sql - 使用多个复选框在 Access 表单中进行过滤
- javascript - JavaScript 中 % 的机制是什么?
- c# - Crystal Reports .NET(具有不同数据库的主报表和子报表)
- javascript - 按下按钮后如何将数据从asp.net传递到javascript
- javascript - 窗帘菜单无法识别我的 JavaScript 源代码
- javascript - 将日期从字符串转换为日期 Javascript
- azure - 如何查看 Azure 中应用服务计划的总已用内存?
- javascript - 无法测试 ng-template 中的输入
- javascript - JavaScript - 解决数组拆分问题的更好方法
- php - 无法获取当前日期的记录