0
我在R中的某些数字列遇到此问题。某些列中的一些负值被括在括号中,列被转换为因子。删除R中的括号并将值转换为负数
如何删除R中的括号并将值设为负值?例如。 “(265)”到-265
如何在R中使用gsub函数来执行此操作?如果有其他方法可用,请建议。
我在R中的某些数字列遇到此问题。某些列中的一些负值被括在括号中,列被转换为因子。删除R中的括号并将值转换为负数
如何删除R中的括号并将值设为负值?例如。 “(265)”到-265
如何在R中使用gsub函数来执行此操作?如果有其他方法可用,请建议。
万一有别的事情上有数字的东西:
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))
这里是一个另类。正则表达式匹配的值以圆括号开头和结尾,并且包含一个或多个数字字符,前面的中间组(数字字符)返回负号。然后将整个批次转换为数字:
as.numeric(gsub("^\\(([1-9]+)\\)$","-\\1",x))