lokheart lokheart - 1 month ago 6
R Question

processing negative number in "accounting" format

I have dataset, which negative value is presented with a bracket around the number i.e.

(10)==-10
, it is in csv format, how can I process it so that R will interpret the
(10)
as
-10
? Thank you.

UPDATE
I know I can work it out by replacing
(
as
-
, remove
)
, and use
as.numeric
afterwards, but is there a more elegant way for this issue?

42- 42-
Answer

If you create an "as.acntngFmt" method for the accounting format, you can read (or perhaps re-read with a text connection using colClasses("acnt").

 setClass("acntngFmt")
 # [1] "acntngFmt"
 setAs("character", "acntngFmt",
    function(from) as.numeric( gsub("\\)", "", gsub("\\(", "-", from))))

  Input <- "A, B, C
  (1.76), 1%, 3.50€
  2.00, 2%, 4.77€
  3.000, 3% , €5.68"

   DF <- read.csv(textConnection(Input), header = TRUE,
     colClasses = c("acntngFmt", "character", "character"))
   str(DF)
'data.frame':   3 obs. of  3 variables:
 $ A: num  -1.76 2 3
 $ B: chr  "1%" "2%" "3%"
 $ C: chr  "3.50€" "4.77€" "€5.68"