具有 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
我正在处理来自 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