2016-10-20 10 views
0

Rでは、文字データ型を含む列の最小値を調べようとしています。列の値の大部分は実際には数値ですが、一部の値は文字列 "Not Available"です。"Not Available"の文字列値を含む列を並べ替えるR

私はこれを使って値を取得していました。

minRate <- min(myRows[,columnIndex], na.rm = TRUE) 

これは、私のテストのほとんどでうまくいくようです。しかし、値は文字列であるため、「10.6」はアルファベット順に「8.6」の前に来るため、「10.3」などの値は「8.6」などの値よりも低くソートされます。次のように

だから、私はミックスに「as.numeric」を追加しました:

minRate <- min(as.numeric(myRows[,columnIndex]), na.rm = TRUE) 

しかし、今私は「強制によって導入のNA」、と言って警告が表示されます。また、実際の(不正確な)数値ではなく、答えとして "NA"が返されます。

「利用できない」値を削除しても、この列から実際の最小値を取得する方法はありますか?

+1

データの読み取り中に 'read.csv/read.table'で' na.strings = "Not Available"を使用し、変換する必要はありません数値に変換する。あなたが言及した問題に関しては、列が 'factor'クラスである可能性があります。したがって、数値型に変換すると整数型に変換されます – akrun

+0

@akrun - これを答えとして追加してください。それは助けになった。 – WEFX

+0

ありがとう、私は解答としてコメントを投稿した – akrun

答えて

0

"Not Avaiable"として欠損値を指定する文字列がある場合、 (オプションstringsAsfactorsに応じて)factor/characterとして読まとして/私たちはna.stringsを指定しない場合read.table/read.csv

df1 <- read.csv("file.csv", na.strings = "Not Available", stringsAsFactors=FALSE) 

na.strings引数の文字列は、その後、数値列が読み込まれます。次に、これらの列をnumericに変換する必要があります(詳細はこちら)

1

stringAsFactors = FALSEこの引数は、データを読み取ったときの自動強制変換を防止するのに役立ちます。他の方法では、直接数値強制で因子レベル強制変換の問題を避けるために、文字として最初に文字として強制しようとする:min(as.numeric(as.character(...)))

関連する問題