从R中的变量名中删除一些但不是全部数字

时间:2017-10-02 22:21:23

标签: r regex

我想从像df1这样的数据帧的变量名中删除数字,以生成像df2这样的数据帧。我希望只有在至少两个连续字符 之前数字时才会删除数字,并且数字的例外 4我想随时保留。非常感谢。

当前df:

df1 <- data.frame("ACO2_E1_E2"=c(1,1,1),"BCKDHB6_E1"=c(1,1,1) ,
                  "CDDD4_E3"=c(1,1,1),"HDFE1"=c(1,1,1))

所需的df:

df2 <- data.frame("ACO_E1_E2"=c(1,1,1),"BCKDHB_E1"=c(1,1,1) ,
                  "CDDD4_E3"=c(1,1,1),"HDFE"=c(1,1,1))

我的尝试:(我设法删除/保留正确的数字,但只是不分青红皂白地,并且无法弄清楚如何在数字之前引入至少两个连续字符的其他标准。)

gsub('[0,1,2,3,5,6,7,8,9]+', '', names(df1))

1 个答案:

答案 0 :(得分:3)

匹配两个单词字符后跟一个非4位数字,并将其替换为单词字符:

x <- gsub("([A-Z]{2})[0-35-9]", "\\1", names(df1))
x
## [1] "ACO_E1_E2" "BCKDHB_E1" "CDDD4_E3"  "HDFE"   

identical(x, names(df2))
## [1] TRUE