2017-02-19 9 views
4

指数表記に自動的に変換された大きな数値を含むデータセットをインポートしました。私は完全な数字を見なければならなかったので、私はオプションを使用しました(scipen = 999)。私は、インポートされた数値がデータセットの元の数値と等しくないことを発見しました。たとえば、5765949338897345178が5765949338897345536に変更されました。指数表記が正確でない

これらの数字が同じではないのはどうでしょうか?変わったことは、(dim_alias1 $ id == 5765949338897345536)と(dim_alias1 $ id == 5765949338897345178)を使用すると同じrownumberを返すということです。これはどのように可能ですか?

+1

正確にこれらの値を保持するために、二重に十分な精度がありません。 –

+1

http://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equalそれは直感的ではないように見えるかもしれませんが、多様性の疑問に対する答えは、「これらの一見等しい数は等しくないのはなぜですか」と、なぜこれらの見かけ上不平等な数字が等しいと扱われているのでしょうか?同じ答えがあります。 – Dason

+0

これらの番号はID番号であり、他のデータセットとのリンクには正確でなければなりません。どのようにこれを解決することができますか? –

答えて

2

変数をID番号として使用しているので、数値である必要はありません。だから、set the column class文字にして読むとき

例:。

dat <- data.frame(id=12345, x=1) 
write.table(dat, tmp <- tempfile()) 
dat2 <- read.table(tmp, colClasses = c(id="character")) 
str(dat2) 

#'data.frame': 1 obs. of 2 variables: 
# $ id: chr "12345" 
# $ x : int 1 
関連する問題