将data.table列从字符转换为数字似乎改变了唯一性

时间:2016-11-11 15:49:41

标签: r data.table

我需要将data.table字符列转换为数字。转换后,不知何故,独特的数值似乎不再是唯一的。我认为它可能与大数值有关。关于如何解决这个问题的任何想法?

library(data.table)
options(scipen = 20)

DT = data.table(col_a = letters[1:5],
                col_b = as.character(72224192551488:72224192551492))

按col_b输出条目数(按预期方式)

DT[, .N, by = col_b]

            col_b N
1: 72224192551488 1
2: 72224192551489 1
3: 72224192551490 1
4: 72224192551491 1
5: 72224192551492 1

将col_b转换为数字

DT[, col_b := as.numeric(col_b)]

现在输出看起来不一样了。我期待相同的输出

DT[, .N, by = col_b]

            col_b N
1: 72224192551488 5

1 个答案:

答案 0 :(得分:0)

看看summary(DT$col_b)

          Min.        1st Qu.         Median           Mean        3rd Qu.           Max. 
72220000000000 72220000000000 72220000000000 72220000000000 72220000000000 72220000000000 

我的猜测是将它转换为数字以某种方式将其四舍五入。奇怪的是,摘要与我们所看到的不符:

> DT
   col_a          col_b
1:     a 72224192551488
2:     b 72224192551489
3:     c 72224192551490
4:     d 72224192551491
5:     e 72224192551492