R:通过从值中减去 1 来更改圆括号间隔数
R: change round brace interval number by subtracting 1 from the value
我有一个数据是这样的:
abc <- data.frame( a = c("[100-150)", "[150, 200)"))
我想把它改成这样:
abc <- data.frame(a = c("100-149", "150-199"))
我知道如何替换括号:
abc$a <- lapply(abc$a, gsub, pattern = "[", replacement = "", fixed = TRUE)
abc$a <- lapply(abc$a, gsub, pattern = "]", replacement = "", fixed = TRUE)
abc$a <- lapply(abc$a, gsub, pattern = ")", replacement = "", fixed = TRUE)
问题是从末尾减1。
有办法吗?
请注意,这只是一个例子,实际上我的数据有这样一列,大约有 2000 行。
带有 gsubfn
的选项。我们在 -
或 ,
之后提取数字 (\d+
) 将其转换为 numeric
减去 1 和 paste
与 -
library(gsubfn)
gsubfn("[-,] ?(\d+)", ~ paste0("-", as.numeric(x) - 1) , as.character(abc$a))
#[1] "[100-149)" "[150-199)"