正则表达式以排除R中的字符串模式

时间:2018-01-23 10:25:17

标签: r regex database dataframe

请,我想通过删除年份标签来重命名我的表格的列。这是我的专栏名称:

"PROV_201601" "MNT_201602" "PROV_201612" .... and so on ! 

我的目标是从列名中删除“2016”。我只熟悉R但不熟悉正则表达式。

任何帮助表示赞赏!

谢谢。

2 个答案:

答案 0 :(得分:3)

我们可以尝试使用sub_捕获作为一个组匹配,后跟四个数字(\\d{4}),并替换为捕获的组的反向引用(\\1 )或使用_

sub("(_)\\d{4}", "\\1", v1)
#[1] "PROV_01" "MNT_02"  "PROV_12"

如果具体到2016年那么

sub("2016", "", v1)
#[1] "PROV_01" "MNT_02"  "PROV_12"

数据

v1 <- c("PROV_201601", "MNT_201602", "PROV_201612")

答案 1 :(得分:2)

首先,使用sub()"2016"的所有实例替换为""。这将从字符串中消除2016年。

col1 <- c("PROV_201601", "MNT_201602", "PROV_201612")
col2 <- sub("2016", "", col1)

现在使用dat重命名数据框names()列:

names(dat) <- col2