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

r - reshape 为 data.table 但不是 data.frame 引发错误

我有一个汇总统计数据框,我使用 reshape 将其转换为宽。这工作正常。但是,如果我将表转换为介于两者之间的 data.table(以添加具有测试统计的另一列),即使我不更改数据,reshape 也会引发错误。

这会产生以下错误:

但是当 data.table 行被注释掉时运行良好。

0 投票
8 回答
196556 浏览

r - 如何在 data.table 中按名称删除列?

要摆脱 a 中名为“foo”的列data.frame,我可以这样做:

df <- df[-grep('foo', colnames(df))]

但是,一旦df转换为data.table对象,就没有办法只删除一列。

例子:

但是一旦它被转换为一个data.table对象,它就不再起作用了。

0 投票
2 回答
31126 浏览

r - 如何在 data.table 上运行 apply?

我将data.table第 2 列到第 20 列作为带空格的字符串(例如,“物种名称”)。我想str_replace()同时在所有这些列上运行,以便所有“物种名称”都变成“物种名称”。我可以这样做:

或者如果我把它作为一个data.table对象,那么我可以一次做一列:

如何对所有第 2 列到最后的所有列执行此操作,类似于上述之一?

0 投票
3 回答
2333 浏览

r - R - 加快大致日期匹配。idata.frame?

我正在努力有效地在两个数据框之间执行“关闭”日期匹配。这个问题探讨了使用包中的解决方案idata.frameplyr但我也会对其他建议的解决方案感到非常满意。

这是两个数据框的一个非常简单的版本:

在实际数据中,sampleticker超过 30,000 行 40 列,samplereport近 300,000 行 25 列。

我想要做的是合并两个数据框,以便每一行sampleticker与最接近的日期匹配相结合,samplereport其中出现在日期之后sampleticker。过去,我通过在代码字段上进行简单合并、升序排序,然后选择代码和日期的唯一组合,解决了类似的问题。然而,由于这个数据集的大小,合并爆炸得非常快。

据我所知,merge不允许这种近似匹配。我见过一些使用 的解决方案findInterval,但由于日期之间的距离会有所不同,我不确定我是否可以指定一个适用于所有行的间隔。

在此处的另一篇文章之后,我编写了以下代码以adply在每一行上使用并执行连接:

这很好用:对于示例数据,我得到了以下内容,这就是我想要的。

但是,由于代码执行了 30,000 多个子集操作,因此速度非常慢:我运行了上述查询一天多,最终将其杀死。

在这里看到 plyr 1.0 有一个结构,idata.frame它通过引用调用数据帧,大大加快了子集操作。但是,我无法使以下代码工作:

我得到错误

这对我来说很有意义,因为该操作返回一个idata.frame(我假设)。但是,将最后一行更改为:

也会抛出错误:

请注意,调用as.data.frame普通的 oldsamplereport会按预期返回原始数据帧。

我知道这idata.frame是实验性的,所以我不一定期望它能够正常工作。但是,如果有人对如何解决此问题有任何想法,我将不胜感激。或者,如果有人能提出一种运行效率更高的完全不同的方法,那就太好了。

马特

UPDATE Data.table 是解决此问题的正确方法。见下文。

0 投票
2 回答
4834 浏览

r - R xts 和 data.table

我可以将 data.table 转换为 xts 对象,就像处理 data.frame 一样:

将 data.table 与 xts 一起使用有什么问题吗?

0 投票
5 回答
7190 浏览

r - 使用 data.table 聚合小计和总计

data.table在 R 中有一个:

将这些数据按组和年份汇总到汇总表中既简单又优雅:

但是,将这些数据汇总到一个汇总表中,包括小计和总计,有点困难,而且也不那么优雅:

这产生:

有没有一种简单的方法可以用 data.table 指定小计和总计,例如 plyr 的margins=TRUE命令?我更喜欢在我的数据集上使用 data.table 而不是 plyr,因为它是一个非常大的数据集,我已经拥有 data.table 格式。

0 投票
3 回答
34715 浏览

r - R:计算组子集的平均值

我想计算每个“天”的平均值,但要计算一天中的一部分(时间=12-14)。这段代码对我有用,但我必须每天输入一行新代码,这将达到数百行。

这似乎应该很简单。当分组变量相同时,我很容易做到这一点,但当我不想包含当天的所有值时,我不知道该怎么做。有一个更好的方法吗?

数据如下所示:

0 投票
1 回答
3662 浏览

r - R中的逐行矩阵运算

最近我遇到了data.table包裹。我仍然不确定如何进行逐行矩阵运算。它最初是为了处理此类操作吗?例如, data.table 相当于apply(M,1,fun)什么?

fun应将向量作为参数,例如mean,medianmad.

0 投票
3 回答
7731 浏览

r - 在函数中使用 data.table i 和 j 参数

我正在尝试编写一些包装函数来减少代码重复data.table

这是一个使用mtcars. 首先,设置一些数据:

现在,这是我通常会写的按组汇总计数的内容。在这种情况下,我按以下方式分组car

复杂之处在于,由于参数ij是在 的框架中评估的,因此如果要传入变量data.table,则必须使用:eval(...)

这有效:

但现在我想按相同的分组变量对结果进行排序。我无法得到以下任何变体来给我正确的结果。注意我总是得到单行结果,而不是有序集。

我知道为什么:这是因为group在 中评估parent.frame,而不是在data.table.

我如何group在 的上下文中进行评估data.table

更一般地说,我如何在函数中使用它?我需要以下函数来给我所有的结果,而不仅仅是第一行数据:

0 投票
8 回答
211032 浏览

r - 汇总/汇总每组的多个变量(例如总和、平均值)

从数据框中,是否有一种简单的方法可以同时聚合(sum、、meanmax)多个变量?

以下是一些示例数据:

我想同时按年和月聚合数据框中的x1x2变量。df2下面的代码聚合了x1变量,但是是否也可以同时聚合x2变量呢?