我有一个df
,其中有一列,其中负美元值用括号括起来。如何将正值和负值都转换为数值列? parse_number
适用于正值,但不考虑代表负值的括号。
样本DF
sample <-
tibble::tribble(
~id, ~dollars,
36, "($0.3)",
1890, "$3.6",
3298, "($0.1)",
3448, "$0.2",
4616, "$0.0",
5409, "($0.1)",
5751, "($0.1)",
5942, "$0.1",
6316, "$0.0",
6589, "$0.1"
)
答案 0 :(得分:3)
以下将完成问题的要求。
as.numeric(sub("\\(", "-", gsub("\\)|\\$","", sample$dollars)))
# [1] -0.3 3.6 -0.1 0.2 0.0 -0.1 -0.1 0.1 0.0 0.1
可读性较低但更简单,只有一个*sub
。
as.numeric(gsub("\\(*\\$([[:digit:].]+)\\)*", "-\\1", sample$dollars))
# [1] -0.3 3.6 -0.1 0.2 0.0 -0.1 -0.1 0.1 0.0 0.1