今日、私は最終的にRの急な学習曲線を登り始めました。私は数時間を費やしてデータセットをインポートし、その他いくつかの基本的なことを行いましたが、データタイプに問題があります:小数点を含むカラムを整数としてインポートし、doubleに変換すると 。 csvファイルをインポートする際の問題/整数からdoubleへの変換をR
例としてここに入れたい小さなcsvファイルを取得しようとすると、というデータファイルが大きすぎると問題が発生することがわかりました(元のファイルは1048418 x 12の行列ですが、 "5000行私は同じ問題を抱えています.100、1000、または2000行しかないときは、列が正しく二重にインポートされます)。
Hereは小さいデータセットです(まだ500KBですが、データセットが小さい場合は問題は複製されません)。コードは
> ex <- read.csv("exampleshort.csv",header=TRUE)
> typeof(ex$RET)
[1] "integer"
ファイルが大きい場合には、返される列が整数型としてインポートされるのはなぜですか?
最悪のことは、私はそれが倍に変換しようとした場合、値が
> exdouble <- as.double(ex$RET)
> typeof(exdouble)
[1] "double"
> ex$RET[1:5]
[1] 0.005587 -0.005556 -0.005587 0.005618 -0.001862
2077 Levels: -0.000413 -0.000532 -0.001082 -0.001199 -0.0012 -0.001285 -0.001337 -0.001351 -0.001357 -0.001481 -0.001486 -0.001488 ... 0.309524
> exdouble[1:5]
[1] 1305 321 322 1307 41
を変更していること。これは間違ってインポートされた唯一の列ではありませんが、私は場合、私はのための解決策を見つけることを考え出し1つの列、私は他のものを並べ替えることができるはずです。ここではいくつかのより多くの情報がある:
> sapply(ex,class)
PERMNO DATE COMNAM SICCD PRC RET RETX SHROUT VWRETD VWRETX EWRETD EWRETX
"integer" "integer" "factor" "integer" "factor" "factor" "factor" "integer" "numeric" "numeric" "numeric" "numeric"
彼らはこの順序である必要があります:整数、日付、文字列、整数、ダブル、ダブル、ダブル、整数、ダブル、ダブル、ダブル、ダブル(種類はおそらく間違っています、しかし、うまくいけば私が意味するものを得るでしょう)
@Xu王を使用しています。私のデータの1%未満の最初の5千の観測値にカットすると、すでに問題が発生しています... – Vivi
残念ながら、私は 'read.csv'のヘルプを読んで行ったので、私のコメントは終わりませんでした。私が言っていたことは、「R」を混乱させる奇妙な値があるかもしれないと思ったということでした。だから私は大小の事実ではなく、むしろ大規模なデータセットがその混乱する文字や値の1つを持っていると思った。それは理にかなっていますか?そうでない場合は、問題ではありません。私は解決策は、colClasses引数を使用することだと思います。 –
@Xu Wang私があなたの言っていることを理解していますが、私はまだ自分の問題を解決する方法についてはあまりよく分かりません。 colClasses引数を使用するにはどうすればよいですか? colClasses引数を使用してこのファイルを正しくインポートする1行のコマンドを私に与えることができますか? – Vivi