長めのID(数値)を持つ場合は明示的に文字列で読む

例えばこういうファイル(hoge.csv)があったとする

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パッケージを使うのが良さげ化。