【问题标题】:Regular expression to exclude a string pattern in R在 R 中排除字符串模式的正则表达式
【发布时间】:2018-01-23 10:25:16
【问题描述】:

拜托,我想通过删除年份标签来重命名表格的列。这是我的列名:

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

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

任何帮助表示赞赏!

谢谢。

【问题讨论】:

  • 为什么不简单地gsub(""2016,"","PROV_201601" "MNT_201602" "PROV_201612")
  • 是的,你是对的!谢谢@amrrs

标签: r regex database dataframe


【解决方案1】:

我们可以尝试使用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")

【讨论】:

  • 超级!非常感谢。如果您可以推荐任何正则表达式教程,请随时告诉我们。谢谢@akrun
  • @CHAMISoufiane 很高兴知道它有效。您可以查看here
【解决方案2】:

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

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

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

names(dat) <- col2

【讨论】:

  • @CHAMISoufiane sub("2016", "", col1, fixed=TRUE) 会更快。
猜你喜欢
  • 2017-04-13
  • 2012-02-17
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2015-09-29
  • 2017-09-20
  • 1970-01-01
  • 2021-09-16
相关资源
最近更新 更多