具有 integer64 数字的 dcast 的意外行为

Unexpected behavior of dcast with integer64 numbers

我正在处理来自 Comtrade 的国际贸易数据,该数据以 csv 文件的形式提供给我。交易值存储为 integer64。我知道我应该阅读更多关于使用这种格式时可以做什么和不能做什么的内容。

一个简单的例子:

library("data.table")
library("bit64")
d <- data.table("ID" = c("a","a","b","b"),
            "type" = c("v1","v2","v1","v2"),
            "value"= (sample(1:100,4) %>% as.integer64) )

dcast(d[,], ID ~ type, fill = NA)
    ID v1 v2
1:  a 65  7
2:  b 63 91

dcast(d[-2,], ID ~ type, fill = NA)
   ID v1                  v2
1:  a 65 9218868437227407266
2:  b 63                  91

“9218868437227407266”从何而来?我希望在那里看到一个 NA。

对于 base 64 你需要使用 NA_integer64_ 而不是 NA

dcast(d[-2,], ID ~ type, fill = NA_integer64_)


   ID v1   v2
1:  a 67 <NA>
2:  b 79   76