データセットがあります。この負の値は数値を角かっこで囲んで表示されます。つまり(10)==-10
、csv形式ですが、Rがを解釈するように処理するにはどうすればよい(10)
です-10
か。ありがとうございました。
(
更新asを置き換え-
、削除)
し、後で使用することで解決できることはわかってas.numeric
いますが、この問題に対してよりエレガントな方法はありますか?
データセットがあります。この負の値は数値を角かっこで囲んで表示されます。つまり(10)==-10
、csv形式ですが、Rがを解釈するように処理するにはどうすればよい(10)
です-10
か。ありがとうございました。
(
更新asを置き換え-
、削除)
し、後で使用することで解決できることはわかってas.numeric
いますが、この問題に対してよりエレガントな方法はありますか?
アカウンティング形式の「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"
周囲の括弧がユニット内の唯一の括弧であることがわかっている場合は、それらを処理する関数を作成できます。
test <- c(10, "(10)", 5)
negative_paren <- function(vec){
#the backspace escapes the special "(" character
vec <- gsub("\\(","-",vec)
vec <- gsub("\\)","",vec)
vec <- as.numeric(vec)
return(vec)
}
negative_paren(test)
[1] 10 -10 5