長めのID(数値)を持つ場合は明示的に文字列で読む
id, value 31274832974983278756, 1.22
これをRで読み込と「あ、アレ?IDの下の桁変わってない???」となるわけだ。
> library("readr") > df <- read_csv("hoge.csv") > as.character(df$id) [1] "31274832974983278592"
そういうときは、明示的に型を指定して文字列として読んでおけばOK。
> df <- read_csv("hoge.csv", col_types = list(col_character(), col_character())) > df$id [1] "31274832974983278756"
倍精度浮動小数点数は大体16桁くらいまでしかただしくないので、こういうことが起こるわけだ。
この手の問題を回避したかったらこの辺を参考にbit64 or gmpパッケージを使うのが良さげ化。