【问题标题】:Remove replicate number from end of string从字符串末尾删除重复编号
【发布时间】:2023-11-19 20:45:01
【问题描述】:

我只需要从strain 列中所有行的末尾删除所有重复数字和字母“R”,并在mutant 中创建一个包含这些结果的新列,最好使用dplyr,这样我就可以将结果向前传递。

例如

print(df)

       strain measurement
1     CK522R1          75
2 CN344attBR1          50
3    GL065R13          32
4   GL078R100          27

期望的输出

       strain measurement     mutant
1     CK522R1          75      CK522
2 CN344attBR1          50  CN344attB
3    GL065R13          32      GL065
4   GL078R100          27      GL078

可重现的数据

structure(list(strain = structure(1:4, .Label = c("CK522R1", 
"CN344attBR1", "GL065R13", "GL078R100"), class = "factor"), measurement = c(75, 
50, 32, 27)), class = "data.frame", row.names = c(NA, -4L))

【问题讨论】:

  • sub("R\\d+$", "", d$strain)

标签: r regex string dplyr


【解决方案1】:

来自 d.b 的评论:

library(dplyr)
df %>% mutate(mutant=sub("R\\d+$", "",strain),replicate=regmatches(strain, regexpr("R\\d+$", strain)))

【讨论】:

  • 如果我想创建一个包含已删除字符的新列怎么办?例如,将 R1CK522R1 保持一致
  • @TheSciGuy - 我已经更新了我的答案,为您提供了额外的专栏。
  • 谢谢!我尝试学习正则表达式,但这对我来说是一个困难的话题!
  • 我自己总是来 * 的!