将字符插入变量名称

时间:2017-09-25 09:34:08

标签: r regex string

我有一个带有变量名称的数据集,例如FamId00ISCO8899,并希望编写一个命令,在最后两位数之前插入一个下划线,代表年份。这样做的最佳方式是什么?我试过regex,但我得到的更多是:

gsub('.{2}$', '', varname)

给了我:

FamId

如何添加'_'和原来的最后两位数字?另外,我在数据集中有变量,这些变量在最后两位数字中没有年份(即IDsex)。有没有办法让正则表达式不影响那些?

2 个答案:

答案 0 :(得分:1)

我们不需要gsub只需sub即可,因为这只是单个实例的替换。将最后两个字符作为一组((...))捕获,并在替换中使用_,然后使用该捕获组的反向引用

sub("(.{2})$", "_\\1", varname)
#[1] "FamId_00"  "ISCO88_99"

.是一个暗示任何角色的元字符。如果需要具体即数字,请使用\\d{2}代替.{2}

数据

varname <- c("FamId00", "ISCO8899")

答案 1 :(得分:0)

替代解决方案始终使用sub()gsub()以及不同的模式。

ids <- c("FamId00", "ISCO8899")
gsub("(^.*)([[:digit:]]{2}$)", "\\1_\\2", ids)
[1] "FamId_00"  "ISCO88_99"