私のデータには、次のような長い値を含む列があります。1469533935218
数値に変換すると情報が失われ、次のようになります。 1.469534e+12
情報を失うことなく数値を数値に変換する方法R
答えて
数字に変換すると情報が失われませんでした。 options("digits")
を参照してください。それは単なる印刷問題です。 options(digits = 20)
を設定して、1469533935218
と入力してください。
あなたは(サフィックスL
あなたがinteger
ではなくdouble
をしたいRを伝えます)コンソールで1469533935218L
を入力すると、あなたが得る:
[1] 1.469534e+12
Warning message:
non-integer value 1469533935218L qualified with L; using numeric value
、整数は32ビットモードで表現することができませんので。 ?integer
の「詳細」セクションが与える:
Integer vectors exist so that data can be passed to C or Fortran
code which expects them, and so that (small) integer data can be
represented exactly and compactly.
Note that current implementations of R use 32-bit integers for
integer vectors, so the range of representable integers is
restricted to about +/-2*10^9: ‘double’s can hold much larger
integers exactly.
非常に最後の文も何も精度が失われないことを示しています。
あなたは整数として1469533935218
を保持したい場合は、限り、あなたは、64ビットのRで64ビットマシン上にあるしかし、私の気持ちがあるとして、64ビット表現を使用してakrunの提案@必要そうする必要はないということです。
また、ストレージコストも考慮する必要があります。データをdouble
のままにしておくと、各番号は32ビットのままです。 64ビット整数としてデータを保持すると、メモリ使用量が2倍になります。実際に、それらの数値で後で浮動小数点計算を実行する場合は、double
モードでそれらを必要とします。なぜdouble
を使用しないのですか?
私たちは、大きな整数を持つ列を持つデータセットを読み取る必要がある場合には、再現性の例
をfread
library(bit64)
library(data.table)
dt1 <- fread("yourfile.csv")
を使用するか、使用する前にbit64
をロード
dt2 <- fread("
1469533935218,1469533935219
14695339352223,1469533935323
")
dt2
# V1 V2
#1: 1469533935218 1469533935219
#2: 14695339352223 1469533935323
正しく読み込むために 'fread'のために' library(bit64) 'を呼び出す必要はありませんが、それは実際には –
の方がよいでしょう。 docsから: "integer64"(デフォルト)は、2^31より大きい整数を含むものとして検出された列を、bit64 :: integer64のように読み込みます。 –
@docendodiscimus大きなトランザクションデータセットを 'fread'で読み込みました。 idsは非常に長い整数です。私はそれが正しく拾うだろうと思ったが、私は二重引用符を確認すると、いくつかの問題があった。だから、もう一度 'bit64'で読んで解決しました。 – akrun
- 1. 情報R失うことなく、数値に倍率を変換(as.numericする()動作するようには思えない)
- 2. 情報を失うことなくfloatをintに変換するには?
- 3. SAS:変数情報を失うことなく複製を扱う
- 4. 数値を文字列に変換してメモリを失うことなく
- 5. 大規模な数値をローマンに変換する方法R
- 6. R:数値に変換して数値に変換する
- 7. 情報を失うことなくRにデータを転記するには?
- 8. ルビーで、ミリ秒の情報を失うことなく、エポックミリ秒をタイムオブジェクトに変換する方法は?
- 9. データ値をmatplotlibの色情報に変換する方法は?
- 10. ファクターを数値に変換するR
- 11. Rコロンと数値を論理値に変換する
- 12. Rの数値は数値クラスを失うことなくフォーマットできますか?
- 13. R - 変数の値を定数として扱う方法
- 14. R:因子レベルを失うことなくデータフレームの値を変更する
- 15. 子のメソッドを失うことなく変数の値を削除する
- 16. 数値を数値に変換する
- 17. R:異なる長さの数値を日付に変換する方法
- 18. 情報を失うことなく4ビットを読み取る
- 19. 過去のSEO値を失うことなくページタイプを変更する方法
- 20. R:データフレーム(混合係数と数値)をXTSに変換するR
- 21. 無効な数値列をHANA上の数値に変換する方法は?
- 22. 複数のマーカーバブル情報を開く方法(ここにAndroid SDK)
- 23. Rカテゴリ別に数値変数を分割する方法
- 24. Y変数を因子に変更し、情報を失う。
- 25. 整数を0を失うことなくバイナリ文字列に変換する
- 26. Javascript DOM、スペーシング情報を失うことなくノードテキストを取得
- 27. ILE RPG - 時間値を数値に変換する方法は?
- 28. 情報を失うことなく、UCS-2LE BOMエンコーディングをUTFに変換します。PHP
- 29. R - char値を持つdfを数値行列に変換する値
- 30. 整数値より大きな値を持つ整数変数をtalend文字列に変換する方法
'options(scipen = 999)'を試してみませんか? –