【发布时间】:2016-10-19 19:47:17
【问题描述】:
我正在尝试选择值为 7015061009422 的所有声明 (ICN)。我使用以下代码:
dt[ICN==7015061009422]
我回来了
> dt[ICN==7015061009422]
UniversalID ICN
1: 2 7015061009422
2: 3 7015061009417
3: 2 7015061009411
4: 2 7015061009428
5: 2 7015061009437
6: 4 7015061009417
7: 5 7015061009411
8: 6 7015061009417
9: 6 7015061009422
10: 7 7015061009422
我终于想通了,如果我在值周围加上引号,我想要发生的事情,就是选择所有实际 ICN 编号等于 7015061009422 的行,这就是我得到的:
> dt[ICN=="7015061009422"]
UniversalID ICN
1: 2 7015061009422
2: 6 7015061009422
3: 7 7015061009422
为什么在我的数据值周围使用引号会产生如此大的差异?
样本数据集:
ICN<-c(7015061009422,7015061009417,7015061009411,7015061009428,7015061009437,7,7015061009417,7015061009411,7015061009417,7015061009422,7015061009422,1)
UniversalID<-c(2,3,2,2,2,1,4,5,6,6,7,8)
dt<-cbind(UniversalID,ICN)
dt<-as.data.table(dt)
dt[ICN==7015061009422]
dt[ICN=="7015061009422"]
我希望这也可以帮助我弄清楚为什么我的唯一计数不起作用:
> > dt[,uniqueN(ICN)]
[1] 3
很明显,有不止三个不同的 ICN 值,为什么会这样呢?
【问题讨论】:
-
问题与this Q 相同。阅读
?setNumericRounding。执行setNumericRounding(0L),您的第一个命令应该与第二个命令的值相同。 -
PS:对于大整数使用
bit64::integer64(而不是double)。
标签: r syntax data.table unique