Неожиданное поведение dcast с целыми числами 64 - PullRequest
1 голос
/ 26 апреля 2019

Я работаю с данными о международной торговле от Comtrade, которые были переданы мне в виде CSV-файла. Торговые значения хранятся в виде целых чисел64. Я знаю, что мне следует прочитать намного больше о том, что можно и нельзя делать при использовании такого формата.

Простой пример:

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»? Я ожидаю увидеть там АН.

1 Ответ

6 голосов
/ 26 апреля 2019

с основанием 64 вам нужно использовать NA_integer64_ вместо NA

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


   ID v1   v2
1:  a 67 <NA>
2:  b 79   76
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...