删除R中的括号并将值转换为负值

时间:2016-11-02 07:11:38

标签: r

我在R中遇到了一些数字列的问题。某些列中的负值采用括号表示,列转换为因子。

如何删除R中的括号并将值设为负值?例如。 “(265)”至-265

如何在R中使用gsub函数来执行此操作?如果有其他方法,请建议。

2 个答案:

答案 0 :(得分:3)

以防万一还有其他数字:

convert.brackets <- function(x){
  if(grepl("\\(.*\\)", x)){
    paste0("-", gsub("\\(|\\)", "", x))
  } else {
    x
  }
}

x <- c("123", "(456)", "789")

sapply(x, convert.brackets, USE.NAMES = F)

[1] "123"  "-456" "789" 

否则只是:

paste0("-", gsub("\\(|\\)", "", x))

答案 1 :(得分:1)

这是另一种选择。正则表达式匹配在以圆括号开头和结尾的值上,并且在两者之间包含一个或多个数字字符,返回中间组(数字字符),前面带有减号。然后将整个批次转换为数字:

as.numeric(gsub("^\\(([1-9]+)\\)$","-\\1",x))
相关问题