【问题标题】:How to remove paranthesis but keep the text in it in R如何删除括号但将文本保留在R中
【发布时间】:2021-12-09 13:39:08
【问题描述】:

我正在尝试使用以下列清理数据集:ltaCpInfoDF$weekdays_rate_1

对于某些行,我想这样做:

输入: 每日(早上 7 点至晚上 11 点):1.20 美元; 输出:上午 7 点至晚上 11 点:1.20 美元

括号内的值可以是行的不同时间。

最初,我正在考虑按部分删除,例如先使用 gsub 删除“Daily(”,然后删除“)”。但是,我似乎遇到了问题。

ltaCpInfoDF$weekdays_rate_1 <- gsub("Daily(", "", ltaCpInfoDF$weekdays_rate_1)

这是显示的错误:

Error in gsub("Daily(", "", ltaCpInfoDF$weekdays_rate_1) : 
  invalid regular expression 'Daily(', reason 'Missing ')''
In addition: Warning message:
In gsub("Daily(", "", ltaCpInfoDF$weekdays_rate_1) :
  TRE pattern compilation error 'Missing ')''

有人可以和我分享一个更好的方法吗?提前谢谢!

【问题讨论】:

  • 您需要了解正则表达式模式中的某些字符需要转义
  • 您在寻找ltaCpInfoDF$weekdays_rate_1 &lt;- gsub("Daily\\(", "", ltaCpInfoDF$weekdays_rate_1) 吗?我认为即使使用sub 也应该这样做。

标签: r brackets


【解决方案1】:

sub 与捕获组一起使用:

input <- "Daily(7am-11pm): $1.20"
output <- gsub("\\S+\\s*\\((.*?)\\)", "\\1", input)
output

[1] "7am-11pm: $1.20"

【讨论】:

    【解决方案2】:

    我们可以使用而不捕获

    gsub("^[^(]+\\(|\\)", "", str1)
    [1] "7am-11pm: $1.20"
    

    数据

    str1 <- "Daily(7am-11pm): $1.20"
    

    【讨论】:

      猜你喜欢
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多