【发布时间】:2016-06-30 08:41:52
【问题描述】:
当我使用以下代码通过商店代码计算数据表中的行数时:
DailyProduct[, .N, by = ANA_Code]
我得到了 14 个商店代码,总行数为 120,237 - DailyPRoduct 中的行数相同,这很棒!
如果我得到一个唯一的商店代码列表:
unique(DailyProduct$ANA_Code)
我得到了 21 个商店代码,这比我上面得到的要多,但实际上是正确的数字。
如果我将商店代码从数字转换为因子,一切都按预期显示,我得到 21 个商店,每个商店的行数加起来为 120,237
这也导致我在汇总数据时出现问题,销售值正确但缺少 7 个商店代码。
在执行这些操作时,数据表处理数值与因子的方式是否存在根本区别?
我不明白为什么会发生这种情况,所以我无法提供这样的例子,因此对此深表歉意。
【问题讨论】:
-
你能检查一下'ANA_Code'是否是一个大数字。如果是这种情况,请在使用
fread读取数据之前加载library(bit64) -
能否添加一对包含在 14 中的商店代码和一对排除在外的商店代码?
-
不知道这是否是相关的,但我用这个在我的剧本,因为R.将这段代码转换,以科学记数法:
options(width = 58, scipen=999, digits = 4)在14包括:5000128300519 5000128680145 5000128022033 5000128300386 5000128680077 5000128888222 5000128020394 5000128211048 5000128689599 5000128689641 5000128210764 5000128689544 5000128689557 5000128781235以下所有被排除在计数,但包括在唯一命令5000128680080 5000128689557 5000128689586 5000128689609 5000128689612 5000128689625 5000128689638 跨度> -
这是一个大整数向量,正如我在评论和答案中提到的那样,这可能会产生问题。你试过
bit64吗? -
@akrun 数据是通过 ODBC 从 Teradata 提取的 - 有什么不同吗?
标签: r data.table