问题标签 [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.
sql - 如何在 R 中使用 data.table 进行基本的左外连接?
我有一个 a 和 b 的 data.table,我below
用 b < .5 和above
b > .5 进行了分区:
我想在above
and之间做一个左外连接below
:对于每个a
in above
,计算 in 的行数below
。这相当于 SQL 中的以下内容:
我如何用 data.tables 完成同样的事情?这是我到目前为止所尝试的:
我还应该更具体一点,因为我已经尝试过merge
了,但这会破坏我系统上的内存(并且数据集只占用我大约 20% 的内存)。
r - 在大型 data.table 中替换 NA 的最快方法
我有一个很大的data.table,其中有许多缺失值分散在它的 ~200k 行和 200 列中。我想尽可能有效地将这些 NA 值重新编码为零。
我看到两个选项:
1:转换为 data.frame,并使用类似这样
的东西
2:某种很酷的 data.table 子设置命令
我会对类型 1 的相当有效的解决方案感到满意。转换为 data.frame 然后再转换回 data.table 不会花费太长时间。
r - data.table ifelse 行为有问题
我正在尝试使用 data.table 计算一个简单的比率。不同的文件有不同的 tmax 值,所以这就是我需要ifelse
. 当我调试它时,dt 看起来不错。tmaxValue
是单个值(在这种情况下遇到的第一个“t=60”),但是是t0Value
dt 中的所有“t=0”值。
我得到的是Result
fortmaxValue
除以所有Result
' 的所有t0Value
',但我想要的是每个唯一的单个比率by
。
谢谢您的帮助。
r - 当合并空块时,是否有一种有效的方法可以让 data.table 从 plyr 模仿 ldply?
假设我有一个要合并到单个 data.table 中的文件列表。我解决这个问题的基本方法是做这样的事情:
这种方法的问题是当你得到空的 data.tables 时(由只包含标题行的空文件引起)。
有没有办法让 data.table 无缝地正确连接空白或 NULL 值?这样你就可以做类似的事情
这应该可以解决我遇到的大部分问题。
编辑:我应该指出我已经使用 plyr 例程实现了这个逻辑。ldply() 完美地工作,但不幸的是,一旦您尝试传递多个文件,它就会非常缓慢且占用大量内存。
r - R:带有 data.table 的表格和插入
我正在尝试获取具有多个索引的非常大的记录集,计算由索引子集确定的组的聚合统计数据,然后将其插入表中的每一行。这里的问题是这些表非常大——每个表超过 1000 万行。
复制数据的代码如下。
基本思想是有一组索引,比如 ix1, ix2, ix3, ..., ixK。一般来说,我只选择其中的几个,比如 ix1 和 ix2。然后,我为名为val
. 为简单起见,我将重点放在总和上。
我尝试了以下方法
通过稀疏矩阵:将值转换为坐标列表,即 (ix1, ix2, val),然后创建一个 sparseMatrix - 这很好地总结了所有内容,然后我只需从稀疏矩阵表示转换回坐标列表。速度:很好,但它做的超出了必要的范围,它没有推广到更高的维度(例如 ix1、ix2、ix3)或更通用的函数而不是总和。
使用
lapply
andsplit
:通过为所有 (ix1, ix2, ...) n 元组创建一个唯一的新索引,然后我可以使用拆分和应用。这里的坏处是唯一索引被转换split
为一个因子,这种转换非常耗时。试试system({zz <- as.factor(1:10^7)})
。我现在正在尝试
data.table
通过类似的命令sumDT <- DT[,sum(val),by = c("ix1","ix2")]
。但是,除了通过类似的方法之外,我还没有看到如何sumDT
与合并DT
DT2 <- merge(DT, sumDT, by = c("ix1","ix2"))
这个 data.table 连接有没有比merge
我描述的操作更快的方法?
【我也试过bigsplit
从bigtabulate
包里,还有一些其他的方法。任何转换为因子的东西都差不多 - 据我所知,转换过程非常缓慢。]
生成数据的代码。自然,最好尝试更小N
的方法来查看是否有效,但并非所有方法都能很好地扩展到N
>> 1000。
r - 结合 split() 和 cumsum()
我正在尝试生成特定足球运动员按赛季累积进球的统计数据。我已经使用 cut 函数从比赛日期中获取赛季。我有与此数据框相对应的数据
在现实生活中,每个赛季的比赛场数可能不是恒定的
我想最终得到看起来像这样的数据
一年内累计进球数和本赛季的比赛次数
python - 按第一列定义的间隔有效地平均第二列
数据文件中有两个数字列。我需要按第一列的间隔(例如 100)计算第二列的平均值。
我可以在 R 中编写这个任务,但是对于一个相对较大的数据文件(数百万行,第一列的值在 1 到 33132539 之间变化),我的 R 代码真的很慢。
在这里,我展示了我的 R 代码。我怎样才能把它调得更快?其他基于 perl、python、awk 或 shell 的解决方案值得赞赏。
提前致谢。
(1) 我的数据文件(制表符分隔,百万行)
(2) 我想要得到的,这里的区间 = 100
(3) R代码
r - 从R中的数据表中提取唯一行
我正在从数据框和矩阵迁移到数据表,但还没有找到从数据表中提取唯一行的解决方案。我想我在[,J]
符号方面遗漏了一些东西,尽管我还没有在常见问题解答和介绍小插曲中找到答案。如何在不转换回数据帧的情况下提取唯一行?
这是一个例子:
相关问题:这种行为是否是数据未排序的结果,就像 Unixuniq
函数一样?
python - 使用 pandas,我如何以有效的方式按组对大型 DataFrame 进行子采样?
我正在尝试根据分组对 DataFrame 的行进行子采样。这是一个例子。假设我定义了以下数据:
如果我按group1
and分组group2
,那么每组中的行数在这里:
(如果有更简洁的计算方法,请告诉。)
我现在想构建一个 DataFrame,它从每组中随机选择一个行。我的建议是这样做:
哪个有效。但是,我的真实数据大约有 250 万行和 12 列。如果我通过构建自己的数据结构来执行此操作,我可以在几秒钟内完成此操作。但是,我上面的实现并没有在 30 分钟内完成(并且似乎没有内存限制)。附带说明一下,当我尝试在 R 中实现它时,我首先尝试plyr
了 ,它也没有在合理的时间内完成;但是,使用的解决方案data.table
很快就完成了。
我如何让它快速工作pandas
?我想喜欢这个包裹,所以请帮忙!
r - 如何快速汇总和汇总数据?
我有一个数据集,其标题如下所示:
我想Count
为Rep
每个求和PID x Time x Site combo
Count
在生成的 data.frame 上,我想获得组合的平均值PID x Time x Site
。
当前功能如下:
这非常慢(原始 data.frame 是510000 20)
. 有没有办法用 plyr 加快速度?