我想向 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/