问题标签 [data.table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
9012 浏览

sql - 如何在 R 中使用 data.table 进行基本的左外连接?

我有一个 a 和 b 的 data.table,我below用 b < .5 和aboveb > .5 进行了分区:

我想在aboveand之间做一个左外连接below:对于每个ain above,计算 in 的行数below。这相当于 SQL 中的以下内容:

我如何用 data.tables 完成同样的事情?这是我到目前为止所尝试的:

我还应该更具体一点,因为我已经尝试过merge了,但这会破坏我系统上的内存(并且数据集只占用我大约 20% 的内存)。

0 投票
10 回答
96980 浏览

r - 在大型 data.table 中替换 NA 的最快方法

我有一个很大的data.table,其中有许多缺失值分散在它的 ~200k 行和 200 列中。我想尽可能有效地将这些 NA 值重新编码为零。

我看到两个选项:
1:转换为 data.frame,并使用类似这样
的东西 2:某种很酷的 data.table 子设置命令

我会对类型 1 的相当有效的解决方案感到满意。转换为 data.frame 然后再转换回 data.table 不会花费太长时间。

0 投票
1 回答
710 浏览

r - data.table ifelse 行为有问题

我正在尝试使用 data.table 计算一个简单的比率。不同的文件有不同的 tmax 值,所以这就是我需要ifelse. 当我调试它时,dt 看起来不错。tmaxValue是单个值(在这种情况下遇到的第一个“t=60”),但是是t0Valuedt 中的所有“t=0”值。

我得到的是ResultfortmaxValue除以所有Result' 的所有t0Value',但我想要的是每个唯一的单个比率by

谢谢您的帮助。

0 投票
1 回答
584 浏览

r - 当合并空块时,是否有一种有效的方法可以让 data.table 从 plyr 模仿 ldply?

假设我有一个要合并到单个 data.table 中的文件列表。我解决这个问题的基本方法是做这样的事情:

这种方法的问题是当你得到空的 data.tables 时(由只包含标题行的空文件引起)。

有没有办法让 data.table 无缝地正确连接空白或 NULL 值?这样你就可以做类似的事情

这应该可以解决我遇到的大部分问题。

编辑:我应该指出我已经使用 plyr 例程实现了这个逻辑。ldply() 完美地工作,但不幸的是,一旦您尝试传递多个文件,它就会非常缓慢且占用大量内存。

0 投票
1 回答
723 浏览

r - R:带有 data.table 的表格和插入

我正在尝试获取具有多个索引的非常大的记录集,计算由索引子集确定的组的聚合统计数据,然后将其插入表中的每一行。这里的问题是这些表非常大——每个表超过 1000 万行。

复制数据的代码如下。

基本思想是有一组索引,比如 ix1, ix2, ix3, ..., ixK。一般来说,我只选择其中的几个,比如 ix1 和 ix2。然后,我为名为val. 为简单起见,我将重点放在总和上。

我尝试了以下方法

  1. 通过稀疏矩阵:将值转换为坐标列表,即 (ix1, ix2, val),然后创建一个 sparseMatrix - 这很好地总结了所有内容,然后我只需从稀疏矩阵表示转换回坐标列表。速度:很好,但它做的超出了必要的范围,它没有推广到更高的维度(例如 ix1、ix2、ix3)或更通用的函数而不是总和。

  2. 使用lapplyand split:通过为所有 (ix1, ix2, ...) n 元组创建一个唯一的新索引,然后我可以使用拆分和应用。这里的坏处是唯一索引被转换split为一个因子,这种转换非常耗时。试试system({zz <- as.factor(1:10^7)})

  3. 我现在正在尝试data.table通过类似的命令sumDT <- DT[,sum(val),by = c("ix1","ix2")]。但是,除了通过类似的方法之外,我还没有看到如何sumDT与合并DTDT2 <- merge(DT, sumDT, by = c("ix1","ix2"))

这个 data.table 连接有没有比merge我描述的操作更快的方法?

【我也试过bigsplitbigtabulate包里,还有一些其他的方法。任何转换为​​因子的东西都差不多 - 据我所知,转换过程非常缓慢。]


生成数据的代码。自然,最好尝试更小N的方法来查看是否有效,但并非所有方法都能很好地扩展到N>> 1000。

0 投票
3 回答
1315 浏览

r - 结合 split() 和 cumsum()

我正在尝试生成特定足球运动员按赛季累积进球的统计数据。我已经使用 cut 函数从比赛日期中获取赛季。我有与此数据框相对应的数据

在现实生活中,每个赛季的比赛场数可能不是恒定的

我想最终得到看起来像这样的数据

一年内累计进球数和本赛季的比赛次数

0 投票
7 回答
613 浏览

python - 按第一列定义的间隔有效地平均第二列

数据文件中有两个数字列。我需要按第一列的间隔(例如 100)计算第二列的平均值。

我可以在 R 中编写这个任务,但是对于一个相对较大的数据文件(数百万行,第一列的值在 1 到 33132539 之间变化),我的 R 代码真的很慢。

在这里,我展示了我的 R 代码。我怎样才能把它调得更快?其他基于 perl、python、awk 或 shell 的解决方案值得赞赏。

提前致谢。

(1) 我的数据文件(制表符分隔,百万行)

(2) 我想要得到的,这里的区间 = 100

(3) R代码

0 投票
2 回答
49066 浏览

r - 从R中的数据表中提取唯一行

我正在从数据框和矩阵迁移到数据表,但还没有找到从数据表中提取唯一行的解决方案。我想我在[,J]符号方面遗漏了一些东西,尽管我还没有在常见问题解答和介绍小插曲中找到答案。如何在不转换回数据帧的情况下提取唯一行?

这是一个例子:

相关问题:这种行为是否是数据未排序的结果,就像 Unixuniq函数一样?

0 投票
1 回答
3724 浏览

python - 使用 pandas,我如何以有效的方式按组对大型 DataFrame 进行子采样?

我正在尝试根据分组对 DataFrame 的行进行子采样。这是一个例子。假设我定义了以下数据:

如果我按group1and分组group2,那么每组中的行数在这里:

(如果有更简洁的计算方法,请告诉。)

我现在想构建一个 DataFrame,它从每组中随机选择一个行。我的建议是这样做:

哪个有效。但是,我的真实数据大约有 250 万行和 12 列。如果我通过构建自己的数据结构来执行此操作,我可以在几秒钟内完成此操作。但是,我上面的实现并没有在 30 分钟内完成(并且似乎没有内存限制)。附带说明一下,当我尝试在 R 中实现它时,我首先尝试plyr了 ,它也没有在合理的时间内完成;但是,使用的解决方案data.table很快就完成了。

我如何让它快速工作pandas?我想喜欢这个包裹,所以请帮忙!

0 投票
2 回答
10546 浏览

r - 如何快速汇总和汇总数据?

我有一个数据集,其标题如下所示:

我想CountRep每个求和PID x Time x Site combo

Count在生成的 data.frame 上,我想获得组合的平均值PID x Time x Site

当前功能如下:

这非常慢(原始 data.frame 是510000 20). 有没有办法用 plyr 加快速度?