обработка отрицательного числа в формате «бухгалтерия» - PullRequest
5 голосов
/ 21 февраля 2011

У меня есть набор данных, отрицательное значение которого представлено скобкой вокруг числа, т.е. (10)==-10, оно в формате csv, как я могу обработать его, чтобы R интерпретировал (10) как -10?Спасибо.

ОБНОВЛЕНИЕ Я знаю, что могу решить это путем замены ( на -, удаления ) и последующего использования as.numeric, но есть ли более элегантный способ решения этой проблемы?

1 Ответ

8 голосов
/ 21 февраля 2011

Если вы создаете метод «as.acntngFmt» для формата учета, вы можете прочитать (или, возможно, перечитать текстовое соединение, используя 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"
...