问题标签 [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.
r - reshape 为 data.table 但不是 data.frame 引发错误
我有一个汇总统计数据框,我使用 reshape 将其转换为宽。这工作正常。但是,如果我将表转换为介于两者之间的 data.table(以添加具有测试统计的另一列),即使我不更改数据,reshape 也会引发错误。
这会产生以下错误:
但是当 data.table 行被注释掉时运行良好。
r - 如何在 data.table 中按名称删除列?
要摆脱 a 中名为“foo”的列data.frame
,我可以这样做:
df <- df[-grep('foo', colnames(df))]
但是,一旦df
转换为data.table
对象,就没有办法只删除一列。
例子:
但是一旦它被转换为一个data.table
对象,它就不再起作用了。
r - 如何在 data.table 上运行 apply?
我将data.table
第 2 列到第 20 列作为带空格的字符串(例如,“物种名称”)。我想str_replace()
同时在所有这些列上运行,以便所有“物种名称”都变成“物种名称”。我可以这样做:
或者如果我把它作为一个data.table
对象,那么我可以一次做一列:
如何对所有第 2 列到最后的所有列执行此操作,类似于上述之一?
r - R - 加快大致日期匹配。idata.frame?
我正在努力有效地在两个数据框之间执行“关闭”日期匹配。这个问题探讨了使用包中的解决方案idata.frame
,plyr
但我也会对其他建议的解决方案感到非常满意。
这是两个数据框的一个非常简单的版本:
在实际数据中,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 是解决此问题的正确方法。见下文。
r - R xts 和 data.table
我可以将 data.table 转换为 xts 对象,就像处理 data.frame 一样:
将 data.table 与 xts 一起使用有什么问题吗?
r - 使用 data.table 聚合小计和总计
我data.table
在 R 中有一个:
将这些数据按组和年份汇总到汇总表中既简单又优雅:
但是,将这些数据汇总到一个汇总表中,包括小计和总计,有点困难,而且也不那么优雅:
这产生:
有没有一种简单的方法可以用 data.table 指定小计和总计,例如 plyr 的margins=TRUE
命令?我更喜欢在我的数据集上使用 data.table 而不是 plyr,因为它是一个非常大的数据集,我已经拥有 data.table 格式。
r - R:计算组子集的平均值
我想计算每个“天”的平均值,但要计算一天中的一部分(时间=12-14)。这段代码对我有用,但我必须每天输入一行新代码,这将达到数百行。
这似乎应该很简单。当分组变量相同时,我很容易做到这一点,但当我不想包含当天的所有值时,我不知道该怎么做。有一个更好的方法吗?
数据如下所示:
r - R中的逐行矩阵运算
最近我遇到了data.table
包裹。我仍然不确定如何进行逐行矩阵运算。它最初是为了处理此类操作吗?例如, data.table 相当于apply(M,1,fun)
什么?
fun
应将向量作为参数,例如mean
,median
或mad
.
r - 在函数中使用 data.table i 和 j 参数
我正在尝试编写一些包装函数来减少代码重复data.table
。
这是一个使用mtcars
. 首先,设置一些数据:
现在,这是我通常会写的按组汇总计数的内容。在这种情况下,我按以下方式分组car
:
复杂之处在于,由于参数i
和j
是在 的框架中评估的,因此如果要传入变量data.table
,则必须使用:eval(...)
这有效:
但现在我想按相同的分组变量对结果进行排序。我无法得到以下任何变体来给我正确的结果。注意我总是得到单行结果,而不是有序集。
我知道为什么:这是因为group
在 中评估parent.frame
,而不是在data.table
.
我如何group
在 的上下文中进行评估data.table
?
更一般地说,我如何在函数中使用它?我需要以下函数来给我所有的结果,而不仅仅是第一行数据:
r - 汇总/汇总每组的多个变量(例如总和、平均值)
从数据框中,是否有一种简单的方法可以同时聚合(sum
、、mean
等max
)多个变量?
以下是一些示例数据:
我想同时按年和月聚合数据框中的x1
和x2
变量。df2
下面的代码聚合了x1
变量,但是是否也可以同时聚合x2
变量呢?