问题标签 [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 投票
2 回答
1786 浏览

linux - 合并 data.frames 导致内存不足错误

根据我收到的错误消息,我有 4GB 的 RAM,并且无法在 Linux 的 R 中将 147.6MB 拉入内存:Error: cannot allocate vector of size 147.6 Mb.

我该如何诊断?

这是我的代码:

在第一个打印语句之后执行停止。我不明白额外的内存使用量来自哪里。环顾 R 中关于 memory() 的文档,这似乎是一个连续的内存问题?有没有办法在 Ubuntu 上的 R 中解决这个问题?

还查看了其他人在这里提出类似问题,但提出的解决方案是特定于 Windows 的。

编辑 1

一些评论以解决以下评论:

因此,从 CSV 读取对象的大小看起来并没有太大变化。我会检查 data.table() 和其余的......

编辑 2

我已经更新了我的代码以使用 data.table() 并且有同样的错误。这让我担心它可能对我的机器有些特殊?对于所涉及文件的大小,这似乎很奇怪。 Error: cannot allocate vector of size 147.6 Mb

编辑 3

通过我的数据检查,我怀疑问题可能在这里。Set3.csv 中有一些常见的字段名称,所以我认为它正在做讨厌的 nxn 连接或其他东西。

0 投票
2 回答
3160 浏览

r - 丢弃第一行和最后 n 行

data.table在 R 中有一个我想丢弃第一行和最后 n 行的地方。我想在之前应用一些过滤,然后截断结果。我知道我可以这样做:

是否有可能在一行中执行此操作?我想到了类似的东西:

这当然行不通,但是有没有不需要额外变量的更简单的解决方案?

0 投票
1 回答
1013 浏览

r - data.tables 和扫描功能

使用 data.table,这将是在选择的列中“扫描”统计信息的最快方法?

从(相当大的)DT 开始

我想通过索引目标列(2:p)来获得以下 data.table 结果以跳过键:

0 投票
3 回答
1803 浏览

r - 根据另一列的文本,对 data.table 的每行不同列中的数据进行整理

我想在我的 data.table 中添加一个新列,其中包含来自其他列之一的数据。但是,列的选择因行而异 - 取决于另一列的内容。所以:

对于数据集:

生成者:

我想要一个新列“选择”,它包含(每行)来自“a_data”或“b_data”的数据,具体取决于“column_choice”的值。因此,生成的数据表将是:

我设法使用以下方法获得了预期的效果:

但是这感觉很笨拙;也许有一种更简单的方法来做到这一点(这无疑也会教会我一些关于 R 的知识)?

在实践中,数据框还有很多其他列需要保留,更多的选择不仅仅是“a或b”,还有几种类型的列要生成,所以我宁愿不使用ifelse可能的基本解决方案适用于上面的基本示例。

非常感谢您的帮助。

0 投票
2 回答
298 浏览

r - R聚合部分列表

我有一个大数据框(base_cov_norm_compl_taxid3),每一行代表一个基因组区域,每一列代表样本中该区域的覆盖率。每个taxed有多个基因组区域(类似于基因组),我想使用聚合来查找相同类型的所有基因组区域的均值和标准差等。

mrkg类型总是有多个基因组区域,有时每个基因组有多个 PFPR 区域。我想通过taxid和进行汇总attr,但仅适用于attr=mrkg. 我不知道该怎么做。下面的代码可以通过taxid 和attr 聚合,但是我想先写list(base_cov_norm_compl_taxid3$taxid,base_cov_norm_compl_taxid3$attr=mrkg)一些子集?

任何帮助表示赞赏,

0 投票
2 回答
174 浏览

r - R表修改

如何取一列中的几个条目的平均值,而另一列中的相应条目具有相同的条目?

例如,我有一个大表,有 3 列,时间和价格为 2。让我们说在时间列下的值重复。像 10:30 出现 4 次,那么我需要取相应价格列条目的平均值并将其汇总到 10:30 的单行中,其中包含单个价格。有人可以给我一些见解吗?

样本数据:

我想修改第 3 行和第 4 行合并为一行,平均价格。

0 投票
1 回答
190 浏览

r - 如何优化大型 R 数据框中每一行的过滤和计数

我有一个数据框,如下所示:

对于每个唯一的姓名/日期对,我想计算一个总数范围,例如“此人当前或第二天工资大于 175 的次数”。列比工资多得多,并且有四个时间片适用于每一行的每个总计。

我目前可以通过唯一化我的数据框来完成:

然后对于 中的每一行df.unique,将以下函数(为清楚起见而写成简写形式)应用于df

给我,在这个简单的例子中:

但是,鉴于我有数十万行,这似乎是一种极其缓慢的方法。有没有更聪明的方法来做到这一点?矩阵运算、应用、sqldf 之类的东西?

重新创建示例 df 的代码:

0 投票
1 回答
262 浏览

r - 在 R 中优化复杂的 data.table 聚合

如何优化大型 R 数据框中每一行的过滤和计数

我有一个data.table如下:

我想知道,对于每个唯一的名称/日期对,对于四个时间段之一,一些事实。我关心的时间段是:

一些事实示例可能是:

我可以使用以下data.table过滤器完成此操作

列表(姓名,日期)]

给我

但这 a) 读写起来很糟糕,b) 似乎效率低下。

关于如何做得更好的任何提示?请注意,在我的真实场景中,我有数十万行、四个时间段和每个时间段 30-35 个事实。

-- 创建代码dt

0 投票
2 回答
39318 浏览

r - 准确了解 data.table 何时是对另一个 data.table 的引用(相对于副本)

我在理解data.table. 一些操作似乎“破坏”了参考,我想确切地了解正在发生的事情。

data.table在从另一个创建一个data.table(通过<-,然后通过 更新新表时:=,原始表也被更改。这是预期的,根据:

?data.table::copystackoverflow:按引用传递操作符在数据表包中

这是一个例子:

但是,如果我在分配和上面的行之间插入非:=基于修改,现在不再修改:<-:=DT

因此,该newDT$b[2] <- 200行似乎以某种方式“破坏”了参考。我猜想这会以某种方式调用副本,但我想充分了解 R 是如何处理这些操作的,以确保我不会在我的代码中引入潜在的错误。

如果有人可以向我解释这一点,我将不胜感激。

0 投票
2 回答
1825 浏览

r - 根据从另一个数据框中的 id 中选择的值分配新列

我有一个 100k+ obs 和 12 cols 的 df。其中一个列是某种 id,我需要使用它来制作基于另一个 df 的另一列。这个另一个df只有50个obs,一个col是id和我需要复制到第一个df的值。

我无法对此进行编码。这是一个部分 df(两者)我只显示这个问题的相关 cols

DF1(100k+ 观测值)

这是带有值和 id 的第二个 df

我需要的是 val 在 df 的新列中,具体取决于两个 df 的 id,如下所示:

任何想法都值得赞赏。谢谢你的时间。

问候