R:替换和重新排列字符的顺序

时间:2017-01-11 09:54:16

标签: r regex

我想重新排列符号的顺序并删除数据框中的某些字符。例如,

14(-)
6(-)
NA
32(+)

成为

-14
-6
NA
32

我尝试gsub("()+", "", x),但这只是处理正数。

我正在考虑拆分单元格,然后在数字列上应用ifelse,但是当我尝试使用str_split(x, "(")中的stringr拆分单元格时,我怀疑我丢失了值,我收到了一条错误消息

  

gregexpr中的错误("(",c(" 14( - )"," 6( - )",NA,&#34 ; 32(+)"):     正则表达式无效'(',原因'缺少')''。

我尝试用"("然后尝试再次拆分它们)替换丢失的值失败。

但我确信应该有一种更简单(也更少痛苦)的方法。

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将数字和符号捕获到不同的组中,重新排序并转换为数字

x <- c("14(-)", "6(-)", NA, "32(+)", "10.3(-)", "13.2(+)")
as.numeric(gsub("(.*)\\((.*)\\)", "\\2\\1", x))
# [1] -14.0  -6.0    NA  32.0 -10.3  13.2