R:如何为列中的所有变量添加连字符?

标签 r regex

我想向 d 数据帧的 FID 列中的所有变量添加连字符 -(在第二个字母之后)。例如,如果变量是 AC10,我想将其更改为 AC-10,同样将 AC11 更改为 AC-11 整个列。

我的尝试:

d$FID <- sub("^(\D+)(\d+).*", "-", d$FID)

> dput(d$FID)
c("AC10", "AC11", "AC12", "AC13", "AC14", "AC15", "AC17", "AC18", 
"AC19", "AC1", "AC20", "AC21", "AC22", "AC23", "AC24", "AC25", 
"AC26", "AC27", "AC29", "AC2", "AC30", "AC31", "AC32", "AC33", 
"AC34", "AC35", "AC36", "AC37", "AC38", "AC39", "AC3", "AC40", 
"AC41", "AC42", "AC43", "AC45", "AC46", "AC47", "AC48", "AC49", 
"AC50", "AC51", "AC52", "AC53", "AC54", "AC55", "AC56", "AC57", 
"AC58", "AC5", "AC60", "AC61", "AC62", "AC63", "AC64", "AC65", 
"AC66", "AC67", "AC69", "AC6", "AC70", "AC71", "AC72", "AC73", 
"AC74", "AC75", "AC76", "AC77", "AC78", "AC79", "AC7", "AC80", 
"AC81", "AC82", "AC83", "AC84", "AC86", "AC87", "AC88", "AC89", 
"AC8", "AC90", "AC91", "AC92", "AC9", "AC100", "AC101", "AC102", 
"AC103", "AC104", "AC105", "AC16", "AC68", "AC93", "AC94", "AC95", 
"AC96", "AC97", "AC99", "DE10", "DE12", "DE13", "DE14", "DE15", 
"DE16", "DE17", "DE18", "DE19", "DE1", "DE20", "DE21", "DE22", 
"DE23", "DE25", "DE26", "DE27", "DE2", "DE33", "DE34", "DE35", 
"DE36", "DE37", "DE38", "DE39", "DE3", "DE40", "DE41", "DE42", 
"DE44", "DE45", "DE46", "DE47", "DE48", "DE49", "DE4", "DE50", 
"DE51", "DE52", "DE53", "DE54", "DE55", "DE56", "DE57", "DE58", 
"DE59", "DE60", "DE7", "DE9", "DE29", "DE30", "DE32", "DE43", 
"DE5")

最佳答案

你可以使用

d$FID <- sub("(\\D)(\\d)", "\\1-\\2", d$FID)

参见this regex demo .

这里

  • (\D) - 第 1 组 (\1):任何非数字
  • (\d) - 第 2 组 (\2):任何数字。

您也可以使用

d$FID <- sub("([[:alpha:]])(\\d)", "\\1-\\2", d$FID)

其中 [[:alpha:]] 匹配任何字母。

参见this regex demo .

关于R:如何为列中的所有变量添加连字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71510703/

相关文章:

r - 基于多个函数参数的子集

r - 如何在 R 中发送读取 csv 的电子邮件并一次发送多封电子邮件?

c# - 正则表达式 - 增量替换

regex - 使用 Cloudant 中的 View 进行无大小写匹配

r - 有没有办法默认折叠侧边栏

r - 跨类别和列自动化卡方

r - 在 Bluemix 的 BigInsights 集群中安装 H2O ai R 包时出错

java - 如何在 Java 中使用 REGEX 解析字符串中的浮点值

javascript - RegExp 在三位小数后放置零 (0)

c# - 有没有办法构造一个正则表达式来排除高于或低于某个值的 ASCII 字符?