2017-02-03 10 views
0

私は大きなデータフレームを持ち、それは文字列、整数列、および数値列が混在しています。私が見たことから、数値にしたい列が必ずしも数字であるとは限りません。私は手動でそれぞれを変換することができますが、数値が入っている列を検出して数値に変換する方法があるかどうかを見たいと思っていました。数字のあるデータフレームの任意の列を数値に変換します(数字はis.numeric)

+1

ソースから読んでいるテーブルはありますか?そうであれば、 'read.table()'は自動的にそれを行います。データフレームには数値の列と要素があります。因数を避けるために、 'as.is = T'を使うと数値と文字の列が得られます。 – gsun

+0

Rが数値でなければならない列の一部を推測している場合、Rが他のvaladのエントリで認識できないものがあるかもしれないので、 'as.numeric() 'を使うことに非常に注意します。 'as.numeric()'はそれを 'NA'に変換します。コンバージョンのいずれかに「NA」がないかどうかを確認し、それらがすべて正しいことを確認します。 –

答えて

0

数字の列名のベクトルを最初に作成する場合は、lapplyを使用できます。 is.numericを使用して列を検索することに基づいて列名を作成するのではなく、手動で列名のベクトルを作成する必要があります。これはlibrary(data.table)を使用しています。

cols <- c("var1", "var2", "var3", "var4") 
DT[, (cols) := lapply(.SD, function(x) as.numeric(as.character(x))), .SDcols=cols] 
関連する問題