我想重新排列符号的顺序并删除数据框中的某些字符。例如,
14(-)
6(-)
NA
32(+)
成为
-14
-6
NA
32
我尝试gsub("()+", "", x)
,但这只是处理正数。
我正在考虑拆分单元格,然后在数字列上应用ifelse
,但是当我尝试使用str_split(x, "(")
中的stringr
拆分单元格时,我怀疑我丢失了值,我收到了一条错误消息
gregexpr中的错误("(",c(" 14( - )"," 6( - )",NA,&#34 ; 32(+)"): 正则表达式无效'(',原因'缺少')''。
我尝试用"("然后尝试再次拆分它们)替换丢失的值失败。
但我确信应该有一种更简单(也更少痛苦)的方法。
答案 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